题目:平方怪圈
如果把一个正整数的每一位都平方后再求和,得到一个新的正整数。
对新产生的正整数再做同样的处理。
如此一来,你会发现,不管开始取的是什么数字,
最终如果不是落入1,就是落入同一个循环圈。
请写出这个循环圈中最大的那个数字。
请填写该最大数字。
第七届蓝桥杯所有组试题与部分答案
如果把一个正整数的每一位都平方后再求和,得到一个新的正整数。
对新产生的正整数再做同样的处理。
如此一来,你会发现,不管开始取的是什么数字,
最终如果不是落入1,就是落入同一个循环圈。
请写出这个循环圈中最大的那个数字。
请填写该最大数字。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
答案:145
C++代码:
#include <iostream>
using namespace std;
int main() {
int num = 2000;
while(num--) {
int n, i, t, max = 0, sum;
for(i = 1; i < 100; i++) {
sum = 0;
while(n) { //把一个正整数的每位平方后再求和
t = n%10;
sum += t*t;
n /= 10;
}
n = sum;
max = max > n ? max : n;
}
cout << max << " ";
if(!num%10) cout << endl;
}
return 0;
}
第七届蓝桥杯所有组试题与部分答案