Description
给出一个小于10000的正整数,用4位数表示,不到4位前面补零。
每次将中间两位取出,将其平方,构成一个新的数,也用4位数表示,这就是一轮操作。
经过若干轮候,如果得到的数以前出现过,就停止。
求需要经过几轮才能够停止。例如:
4444 ... 44 ... 1936
1936 ... 93 ... 8649
8649 ... 64 ... 4096
4096 ... 09 ... 0081
81 ... 08 ... 0064
0064 ... 06 ... 0036
0036 ... 03 ... 0009
0009 ... 00 ... 0000
0000 ... 00 ... 0000
经过9轮,得到的0000以前得到过。
Input
一个整数,初始的数。
Output
一个整数,表示多少轮后出现重复停止。
Sample Input
4444
Sample Output
9
参考代码如下:
#include<stdio.h>
#include<string.h>
int num[10000];
int main()
{
int n;
int i,j,k;
while(scanf("%d",&n)!=EOF)
{
memset(num,1,sizeof(num));
int sum=0;
while(num[n])
{
num[n]=0;
n=n%1000/10;
n*=n;
sum++;
}
printf("%d\n",sum );
}
return 0;
}