首页 > 其他 > 详细

3.平方怪圈

时间:2018-04-05 00:44:53      阅读:459      评论:0      收藏:0      [点我收藏+]

声明

可能本文章会有错误,希望各位读者看到后,记得回复留言,提醒我,以免误人子弟。本人菜鸡,还望各位大佬手下留情。

题目

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

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

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


分析

略,这里由于本人对集合类不是特别熟悉,只能是想起来哪个用哪个,相对数组来说比较方便些,如果对集合类不是特别熟悉的话,可以用数组代替,比赛的时候当然是以最快的方式求出答案为好,但是学习的时候博主还是认为应该多学习怎么写是最优的。

博主这里用HashSet是因其去重的特性,比较方便些。


代码

import java.util.ArrayList;
import java.util.HashSet;

public class c {

    public static void main(String[] args) {
        int a = 1234;   //初始数字
        int b;  //每次取出的数字
        int count = 0; //每次的平方和
        int num = 100; //运算次数
        ArrayList<Integer> list = new ArrayList<Integer>(); //将b放入此list
        HashSet<Integer> set = new HashSet<Integer>(); //将count放入此set
        
        //运算次数
        for(int i=0;i<num;i++) {
            //取出的每一个位数的数字放入list
            while(a>0) {
                b = a % 10;
                list.add(b);
                a = a / 10;
            }
            
            a = 0;
            
            //运算每次的平方和,并添加至set
            for(int c : list) {
                a = a + c*c;
            }
            list.clear();
            set.add(a);
        }
        System.out.println(set);
    }
}

3.平方怪圈

原文:https://www.cnblogs.com/drinkoo/p/8719559.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!