平方怪圈
题目描述
如果把一个正整数的每一位都平方后再求和,得到一个新的正整数。对新产生的正整数再做同样的处理。
如此一来,你会发现,不管开始取的是什么数字,最终如果不是落入1,就是落入同一个循环圈。
请写出这个循环圈中最大的那个数字。
输出
输出答案即可
直接暴力循环。
看下方代码,通过不断打印do…while循环中的y找出这个怪圈的数字都是什么,然后找出最大的。
#include <iostream>
using namespace std;
int main(){
int sum=0;
int x=285;
int y,a,temp=0;
do{
y=0;
while(x!=0){
a=x%10;
x=x/10;
y+=a*a;
// cout<<x<<' '<<a<<' '<<y<<endl;
}
if(y>temp) temp=y;
x=y;
cout<<y<<endl;
}while(y!=285);
cout<<temp;
}
显然这个圈是:4 16 37 58 89 145 42 20 4所以最大数是145.