首页 > 代码库 > Java进阶之欧拉工程 第十五篇【2的1000次方各位之和为多少】

Java进阶之欧拉工程 第十五篇【2的1000次方各位之和为多少】

题目如下:

215 = 32768 并且其各位之和为 is 3 + 2 + 7 + 6 + 8 = 26.

21000 的各位数之和是多少?

原题如下:

215 = 32768 and the sum of its digits is 3 + 2 + 7 + 6 + 8 = 26.

What is the sum of the digits of the number 21000?

解题思路:这道题和之前的大数求和的思想有点类似,就是用数组存储大数的每一位数,然后相加,上次写的大数相加的函数稍作修改,这里也就可以用了,java代码如下:


public class Launcher {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int sum=0;
		Vector<Integer> sumList =new Vector<Integer>();
		for(int i=0;i<1000;i++){
			sumList=double_num(sumList);
		}
		for(int i=0;i<sumList.size();i++){
			sum+=sumList.get(i);
		}
		System.out.println(sum);
	}

	public static Vector<Integer> double_num(Vector<Integer> a){  
        Vector<Integer> intNum=new Vector<Integer>();   
        int c=0;  
        int count=0;//进位数,可能取值0和1  
        int localNum=0;//相同位数相加后去掉进1剩下的值  
        if(a.isEmpty())                                                                                            
        {  
                a.add(2);  
            return a;  
        }  
        for(int i=0;i<a.size(); i++){     
                  
        	c=a.get(i)*2;          //位数乘2 
            localNum=(c+count)%10;  
            intNum.add(localNum);  
            if(c+count>9){            //检测是否进位  
                 count=1;  
            }else{  
                 count=0;                  
            }  
        }
        if(count==1){                                                                                                               
                intNum.add(count);    
        }
        
        return intNum;
	}
}