zoukankan      html  css  js  c++  java
  • 3.平方怪圈

    声明

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

    题目

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

    如此一来,你会发现,不管开始取的是什么数字,
    最终如果不是落入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);
    	}
    }
    
  • 相关阅读:
    jquery toggle(listenerOdd, listenerEven)
    struts quick start
    hdu 1518 Square (dfs)
    hdu 2544 最短路 (最短路径)
    hdu 1754 I Hate It (线段树)
    hdu 1856 More is better (并查集)
    hdu 1358 Period (KMP)
    hdu 2616 Kill the monster (DFS)
    hdu 2579 Dating with girls(2) (bfs)
    zoj 2110 Tempter of the Bone (dfs)
  • 原文地址:https://www.cnblogs.com/drinkoo/p/8719559.html
Copyright © 2011-2022 走看看