在计算机领域中,经常需要做一些很大的数字处理,比如超过64位,比如128位处理。
但是计算机目前32位系统最多处理2^32这样的32位的数字,但是对于大型数字无法处理.
如:
3032832398719038781904783904783294873248783493194394132041834
+
323819473948324891247129084723412348713403284
=
但是计算机目前32位系统最多处理2^32这样的32位的数字,但是对于大型数字无法处理.
如:
3032832398719038781904783904783294873248783493194394132041834
+
323819473948324891247129084723412348713403284
=
3032832398719039105724257853108186120377868216606742845445118
import java.util.*;
class AAA
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
char cs1[] = sc.next().toCharArray(); //读第一个超大数
char cs2[] = sc.next().toCharArray(); //读第二个超大数
int jgmax=Math.max(cs1.length,cs2.length); //建立超大数相加的结果数组
int jg[] = new int[jgmax+1]; //相加后的数组
int is1[] = new int[jgmax+1];
int is2[] = new int[jgmax+1];
for(int i1=0;i1<cs1.length;i1++) //把第一个超大数转为int数组,倒转
is1[cs1.length-1-i1] = (cs1[i1]-48);
for(int i2=0;i2<cs2.length;i2++) //把第二个超大数转为int数组,倒转
is2[cs2.length-1-i2] = (cs2[i2]-48);
for(int c1=cs1.length;c1<is1.length;c1++) //数组初始化
is1[c1]=0;
for(int c2=cs2.length;c2<is2.length;c2++)
is2[c2]=0;
int gwxj=0,t=0; //gwxj分位相加。t相加进位 0:无进位,1:有进位
for(int xj=0;xj<=jgmax;xj++){
gwxj = is1[xj]+is2[xj]+t;
t=0;
if(gwxj>=10){
jg[xj]=(gwxj%10);
t=1;
}
else{
jg[xj]=gwxj+t;
t=0;
}
t=gwxj%10;
}
int n=0;
if(jg[jg.length-1]==0)
n=1;
for(int j3=n;j3<jg.length;j3++) //倒序打印结果
System.out.print(jg[jg.length-j3-1]);
System.out.println();
}
}