码迷,mamicode.com
首页 > 其他好文 > 详细

3.平方怪圈

时间:2018-04-05 01:30:19      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:code   代码   clear   添加   内容   set   imp   rgs   pos   

声明

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

题目

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

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

标签:code   代码   clear   添加   内容   set   imp   rgs   pos   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!