平方怪圈
如果把一个正整数的每一位都平方后再求和,得到一个新的正整数。
对新产生的正整数再做同样的处理。
如此一来,你会发现,不管开始取的是什么数字,
最终如果不是落入1,就是落入同一个循环圈。
请写出这个循环圈中最大的那个数字。
请填写该最大数字。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
直接暴力破解:
只有两种情况,难就难在如何判断开始第二次循环开始。
手写算过来的发现4就是另外一个循环;
package lq;
import java.util.Arrays;
public class 平方怪圈 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int [] a=new int[500];
int b,c,d,k;
k=4;
for(int i=0;i<500;i++) {
if(k<10) {
a[i]=k;
c=k%10;
k=c*c;
}
if(k>=10&&k<100) {
a[i]=k;
b=a[i]/10;
c=a[i]%10;
k=b*b+c*c;
}
if(k>=100) {
a[i]=k;
b=a[i]/10%10;
c=a[i]%10;
d=a[i]/100;
k=b*b+c*c+d*d;
}
}
Arrays.sort(a);
System.out.println(a[499]);
}
}