13题 大和
计算出以下一百个50位数的和的前十位数字。写了两个大数相加的:
程序段1:String s1= "74324986199524741059474233309513058123726617309629";
String s2= "91942213363574161572522430563301811072406154908250";int k=0,n;
String s="";
for (int i=s1.length()-1 ;i>=0;i--){
n=k+s1.charAt(i)+s2.charAt(i)-96;
if(n>9) k=1; else k=0;
s=(n % 10)+s;
}
if(k>0) s=k + s;
System.out.println(s);
同样写了两大数相加,与上段略有差异
StringBuffer s1 = new StringBuffer(" 74324986199524741059474233309513058123726617309629");
StringBuffer s2 = new StringBuffer(" 91942213363574161572522430563301811072406154908250");
int k=0,n;
for (int i=s1.length()-1 ;i>0;i--){
n=k+s1.charAt(i)+s2.charAt(i)-96;
if(n>9) k=1; else k=0;
n=(n%10)+48;
s1.setCharAt(i,(char) n);
}
if(k>0) s1.setCharAt(1,'1');
System.out.println(s1);
16题 幂的数字和
215 = 32768,而32768的各位数字之和是 3 + 2 + 7 + 6 + 8 = 26。
21000的各位数字之和是多少?
int n,k=0,a[]=new int[1000]; //数组定大了
a[0]=1;
for (int i=0;i<1000; i++){
for (int i2=k;i2>=0;i2--){
n=2*a[i2];
a[i2]=n % 10;
if (n>9) a[i2+1]=a[i2+1]+1;
}
if ( a[k+1]==1) k++;
//for (int i1=k;i1>=0;i1--) System.out.print(a[i1]);
//System.out.println(" ");
}
n=0;
for (int i=k;i>=0;i--) n+=a[i];
System.out.print(n);