java 整数加减_JAVA超大整数的加法如何改成减法
展開全部
你這個道題很有意思,應(yīng)該是怎么使用算法吧:
減法從各位開始計算,需要判斷減數(shù)和被減62616964757a686964616fe58685e5aeb931333337613834數(shù)的大小:
A.?當(dāng)減數(shù)?>=?被減數(shù),標(biāo)記后一位不用退位
B.?當(dāng)減數(shù)?
代碼如下:
public?class?HandleLargeNumber?{
public?static?void?main(String[]?args)?{
int?a[]?=?{?0,?9,?9,?7,?9,?4,?5,?6,?7,?2,?3,?4,?5,?6,?4,?7,?8,?9,?8,?7,?6,?9?};
int?b[]?=?{?0,?0,?5,?9,?1,?6,?4,?5,?6,?2,?3,?4,?5,?7,?2,?1,?3,?4,?0,?3,?2,?9?};
jianFa(a,b);
//?下面是驗證:通過BigInteger來做
BigInteger?a1?=?new?BigInteger("997945672345647898769");
BigInteger?a2?=?new?BigInteger("59164562345721340329");
System.out.println(a1.subtract(a2));
}
public?static?void?jianFa(int[]?a,?int[]?b)?{
int?idx1?=?getStart(a);
print(a,?idx1);
int?idx2?=?getStart(b);
print(b,?idx2);
boolean?isTui?=?false;?//?是否退位標(biāo)記
int?c[]?=?new?int[a.length];
for?(int?i?=?a.length;?i?>?idx1;?i--)?{
if?(!isTui)?{
//?不退位
int?aNum?=?a[i?-?1];
int?bNum?=?b[i?-?1];
if?(aNum?>=?bNum)?{
c[i?-?1]?=?aNum?-?bNum;
isTui?=?false;
}?else?{
c[i?-?1]?=?10?+?aNum?-?bNum;
isTui?=?true;
}
}?else?{
//?退位
int?aNum?=?a[i?-?1]?-?1;
int?bNum?=?b[i?-?1];
if?(aNum?>=?bNum)?{
c[i?-?1]?=?aNum?-?bNum;
isTui?=?false;
}?else?{
c[i?-?1]?=?10?+?aNum?-?bNum;
isTui?=?true;
}
}
}
System.out.printf("\n等于:\n");
print(c,?getStart(c));
}
private?static?int?getStart(int[]?arr){
for?(int?i?=?0;?i?
if?(arr[i]?!=?0)?{
return?i;
}
}
return?0;
}
private?static?void?print(int[]?arr,?int?start){
for?(int?i?=?start;?i?
System.out.printf("%d",?arr[i]);
}
System.out.print("\n");
}
}
上面的例子只適用用減數(shù)大于被減數(shù),當(dāng)減數(shù)小于被減數(shù)時,需要額外的計算,不過思路差不多,復(fù)雜度大了很多,呵呵。
親,如果回答滿意,請及時采納,謝謝!!!
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的java 整数加减_JAVA超大整数的加法如何改成减法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java pdf添加图片_java实现在
- 下一篇: java实现责任链模式_我的Java设计