描述
现在给你一个简单的问题,给你两个非负整数A和B,你需要计算出A除以B的结果。不过要注意哦,这里的A非常大,B在int范围内。大到老师提醒你们需要使用高精度来做。
输入条件
输入两个非负整数A和B,A的位数不超过10000,B在int范围内,数据不保证A>=B。
输入样例 1
123456789 45
输出条件
输出A除B的商和余数。
输出样例 1
2743484 9
核心思路
高精度计算可以用数组来代替数据,当数据超过long long 的时候,用int型的数组可以解决数据过大问题,更多可参考往期大数阶乘,首先怎么去将接受的字符串转化为数组,废话不多说代码如下
for(Alength; A[Alength]!='\0'; Alength++) {
a[Alength+1]=A[Alength]-'0';
}
减去对应的ASCII码值即可,a为int型。\0是字符串的结束标志。
运用小学学过的除法,灵活的运用数组,建立c数组来存储商,temp来接受每次的余数。这里要明白一点,每一除法从第一位开始,比如4321÷21,首先用4/21=0,则c[1]=0,temp=4%21=4。下一次用temp*10+3来除以21。c[2]=43/21=2,余数temp=43%21=1...........如此下去即可。
最后怎么去输出c[]数组,主要是比如

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



