当前位置: 移动技术网 > IT编程>开发语言>Java > Java 位平方和

Java 位平方和

2019年03月06日  | 移动技术网IT编程  | 我要评论

把一个整数的每个数位都平方后求和,又得到一个整数,则称这个整数为:位平方和。

题目:

平方怪圈

如果把一个正整数的每一位都平方后再求和,得到一个新的正整数。
对新产生的正整数再做同样的处理。

如此一来,你会发现,不管开始取的是什么数字,
最终如果不是落入1,就是落入同一个循环圈。

请写出这个循环圈中最大的那个数字。

请填写该最大数字。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。(第七届蓝桥杯)

 1 import java.util.arraylist;
 2 import java.util.scanner;
 3 
 4 public class three {
 5     static int max=0;//最大值
 6     static arraylist arrlist=new arraylist();//存下每一次的平方和
 7     static arraylist quan=new arraylist();//循环圈
 8 
 9     public static void f(int n){
10         int sum=0;
11         while(n!=0){
12             sum+=(n%10)*(n%10);
13             n=n/10;
14         }
15         if(sum!=0) {
16             if (!arrlist.contains(sum)) {//如果没有出现平方和
17                 arrlist.add(sum);
18                 f(sum);
19             } else {
20                 //当出现重复的平方和时,代表进入循环圈,继续求平方和,将该循环圈中最大的数字找出
21                 //循环一次得出循环圈中的所有数字
22                 do {
23                     quan.add(sum);
24                     n = sum;
25                     sum = 0;
26                     while (n != 0) {
27                         sum += (n % 10) * (n % 10);
28                         n /= 10;
29                     }
30                 } while (!quan.contains(sum));
31                 //遍历循环圈得出最大的数字
32                 for (int i = 0; i < quan.size(); i++) {
33                     if (max < (int) quan.get(i)) {
34                         max = (int) quan.get(i);
35                     }
36                 }
37             }
38         }
39     }
40     public static void main(string[] args) {
41         scanner sc = new scanner(system.in);
42         int n = sc.nextint();
43         f(n);
44         system.err.println(max);
45         sc.close();
46     }
47 
48 }

代码转自:https://blog.csdn.net/djdjdjcux/article/details/82954404  

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网