一、高精度
当然在java中,进行高精度的加法、减法、乘法、除法运算的时候,可以通过java.math包中提供的BigInteger类提供的的方法来进行计算:
加法:a.add(b);表示a+b
减法:a.subtract(b);表示a-b
乘法:a.multiply(b);表示a*b
除法:a.divide(b);表示a/b并取整
取余:a.remainder(b);表示a%b
除法取余:BigInteger c[]=a.divideAndRemainder(b); a除b的商给 c[0],余数给c[1]
最大公约数:a.gcd(b); a与b的最大公约数
绝对值:a.abs(); 对a取绝对值
取相反数:a.negate(); 对a取相反数
取幂值:a.pow(n); 求a的n次方
二、高精度加法:
给定两个正整数,计算它们的和。
vector是stl里的动态数组,动态数组是模板库中的一个类,当元素的个数大于等于数组的大小的时候,数组的大小会变成原来的两倍,系统会从另一片区域中找出一块原来的数组的内存的两倍的空间,之后再把原来的数组拷贝到新的数组中。
为什么用a[i]-‘0’?因为ASCII中的0-9对应48-57,但我们计算的时候想要数字,而不是它的ASCII码。所以必须让0变为0,1变为1以此类推…
’0‘ - ’0‘ = 0 –> 48 - 48 = 0
‘1’ - ‘0’ = 1 –> 49 - 4