中心平方数(C++模拟)

贝西的女儿卡西从一所牛校放学回家,并带来了一个新的数学问题。(贝西是头母牛,所以卡西去牛校没什么奇怪的)“我简直不敢肯定我能把这些运算做完。”她抱怨着。“你在做什么?”她母亲关心地问。老师给了我们一个小于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;
} 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值