蓝桥杯—平方怪圈 算法分析

来源:互联网 发布:淘宝星期几流量最少 编辑:程序博客网 时间:2024/05/11 17:36

题目  --------  平方怪圈


如果把一个正整数的每一位都平方后再求和,得到一个新的正整数。
对新产生的正整数再做同样的处理。


如此一来,你会发现,不管开始取的是什么数字,
最终如果不是落入1,就是落入同一个循环圈。


请写出这个循环圈中最大的那个数字。


请填写该最大数字。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。


  1. #include<iostream>  
  2. using namespace std;
  3. int main()  
  4. {  
  5.     int i, n, j, ans=0;  
  6.     cin>>n;  
  7.     for(i=0;i<50;i++)  //循环多少次 随便写  
  8.     {  
  9.       
  10.         while(n!=0)  
  11.         {  
  12.             j=n%10;  
  13.             ans+=j*j;  
  14.             n/=10;  
  15.         }  
  16.         printf("ans=%d\n",ans);       
  17.         n=ans;  
  18.         ans=0;  
  19.     }  
  20.   
  21.     return 0;  
  22.  }  
答案是  145     自己运行一下就知道了  

解出这道题  其实并不重要   重要的解这道题发现一种方法

怎么才能快速的知道任何一个正整数每一位上的数是几?

看下面这段程序:

  1.         while(n!=0)  
  2.         {  
  3.             j=n%10;  
  4.             n/=10;  
  5.         }  
分析一下   很容易就知道了 其实j在这个循环中依次代表这个整数每一位上的数,从个位开始。


不管这个整数多大,这个方法都可以用。是不是很简单呢?大笑


1 0
原创粉丝点击