POJ 2183

题意:给一个六位数,取其中间4位,再平方,再取中间6位。。。一直做到找到循环节。输出,循环节的第一个数,循环节大小和需要几次发现循环节

 

思路:模拟,没什么好说的

 

统计:332K, 0MS, 1Y

 

#include <iostream> #define F(i,a,b) for (int i=a;i<=b;i++) using namespace std; int mk[1000000], total, x; int main() { scanf("%d", &x); while (mk[x] == 0) { mk[x] = ++total; int t = (x%1000000)/10%10000; x = t*t%1000000; } total; printf("%d %d %d/n", x, total-mk[x]+1, total); return 0; } 

你可能感兴趣的:(POJ 2183)