中位平方

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; 
}

 

 

 

更多做题心得的详情请查看(记得关注哦)https://mp.weixin.qq.com/s?__biz=MzIyOTM4MDMxNw==&mid=2247483798&idx=1&sn=d4fbd34e50ce4efda39d7710d2dc5dc9&chksm=e842d824df3551320d7f1ed85286b2616aec419f7a852cc5c9c9f270beb237b5e6ca83166162&token=1630951018&lang=zh_CN#rd

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值