Java 位平方和

2019-03-06 07:16:19来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

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

题目:

平方怪圈

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

如此一来,你会发现,不管开始取的是什么数字,
最终如果不是落入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  djdjdjcux

 


原文链接:https://www.cnblogs.com/fordreamInsisting/p/10477537.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Docker安装ElasticSearch 以及使用LogStash实现索引库和数据库同

下一篇:Java 实现异步调用