C/C++ C组平方怪圈
题目
平方怪圈
如果把一个正整数的每一位都平方后再求和,得到一个新的正整数,对新产生的正整数再做同样的处理。
如此一来,你会发现,不管开始取的是什么数字,最终不是落入1,就是落入同一个循环圈。
请写出这个循环圈中最大的哪个数字。
请填写该最大数字。
注意:你提交的应该是一个整数,不要填写任何多余的内容(答案145)
解题思路
/*
平方怪圈:
25 -> 55 + 22 -> 29 -> 99 + 22 -> 85 -> 55 + 88 -> … -> 1或者落入同一个循环圈
需求:
* 找到循环圈中最大的那个数字 int max
* 循环条件 0 < i < 100
* 用每一个max 和 每一个数比较 最大的那个数就是结果
*/
题解代码
#include<iostream>
using namespace std;
/*
平方怪圈:
25 -> 5*5 + 2*2 -> 29 -> 9*9 + 2*2 -> 85 -> 5*5 + 8*8 -> ... -> 1或者落入同一个循环圈
需求:
* 找到循环圈中最大的那个数字 int max
* 循环条件 0 < i < 100
* 用每一个max 和 每一个数比较 最大的那个数就是结果
*/
int main(){
int dig = 24; // 随机一个正整数
int i = 0;
int temp = 0;
int max = 0;
for(i; i < 100; i++){ // 不需要大于100
int res = 0;
while(dig != 0) {
temp = dig % 10;
dig /= 10;
res += temp * temp;
}
dig = res;
if(max < res) {
max = res;
}
}
cout << max << endl;
return 0;
}