题目:
对一个三位数,先对该三位数的各个位数字立方求和,在对得出结果的各个位数字立方求和.如此循环下去,判断最后是否能求出一个固定不变的值;如果不能,则输出error.(在求解过程中,如果结果大于三位数,则对该数的低三位继续往下运算.
例:111
第一次1^3+1^3+1^3=3
第二次0+0+3^3=27
三0+2^3+7^3=351
四3^3+5^3+1^3=153
第五次与第四次结果相同
输出
该如何判断继续循环下去不会出现固定值呢?
求大佬解答
这个判断不了吧,可以限制循环次数,找多少次就不找了
供参考:
#include<stdio.h>
int main()
{
int T, n, k, flg = 0, i;
scanf("%d", &T);
while (T != 1 && T != 55 && T != 136 && T != 153 && T != 160 && T != 370 && T != 371 && T != 407)
{
n = 0; k = 0; flg++; i = 1;
printf("%d-", T);
while (i <= 3)
{
n += (T % 10) * (T % 10) * (T % 10);
printf("%c%d*%d*%d", k++ == 0 ? '>' : '+', T % 10, T % 10, T % 10);
T /= 10;
i++;
}
printf("=%d\n", n);
T = n;
}
if (flg == 0)printf("%d", T);
return 0;
}