贝西的女儿卡西从一所牛校放学回家,并带来了一个新的数学问题。(贝西是头母牛,所以卡西去牛校没什么奇怪的)“我简直不敢肯定我能把这些运算做完。”她抱怨着。“你在做什么?”她母亲关心地问。老师给了我们一个小于1000000的正整数,无论他到底是几位,我们都把他当成6位的,比如12就被当作000012。每次我们都求出原数的中心数,然后将这个中心数平方,得到一个新的数。重复这个过程(对新数再求中心数,再平方……),直到我们得到了一个已经出现过的数。最开始的那个数算作已经出现过的。所谓中心数,就是这个六位的第3,4,5位。比如283120的中心数就是000312。
帮帮卡西吧,她太可怜了。
输入格式:
仅一行,一个整数,即那个初始值。可能不足6位,但不会超过6位。
输出格式:
仅一行,一个整数,表示运算多少次之后出现重复(取中心数和平房合起来算一次运算)。注意中心数发生重复没有用,只有新数发生重复才有用。
样例输入:
253405
样例输出:
6
数据范围:
小于1000000的正整数
时间限制:
1000
空间限制:
65536
提示:
样例解释:
当前数 中心数 新数(中心数平方)
253405 000340 115600
115600 000560 313600
313600 000360 129600
129600 000960 921600
921600 000160 025600
025600 000560 313600
#include<bits/stdc++.h>
using namespace std;
long long zxs,shu1,shu2[1000001],ans=1;
int main(){
cin>>shu1;
shu2[ans]=shu1;
do{
zxs=shu2[ans]/10%10*1+shu2[ans]/100%10*10+shu2[ans]/1000%10*100;
shu2[ans+1]=zxs*zxs;
ans++;
for(int i=1;i<ans;i++){
if(shu2[ans]==shu2[i]){
cout<<ans-1;
return 0;
}
}
}while(1);
return 0;
}