这里给的是高精除以低精。
算法分析
做除法时,每一次的商的值都在0~9,每次求得的余数连接以后的若干位得到新的被除数,继续做除法。因此在做高精度除法时,要涉及到乘法运算和减法运算以及移位处理。
为程序简洁,可以避勉高精度乘法,用0~9次循环减法取代得到商的值,对于高精度数除以低精度数,我们采用按位相除法。
参考程序
#include<bits/stdc++.h>
using namespace std;
int a[100005];
int c[100005];
main(){
string s;
int p;
cin>>s>>p;
int la=s.size(),x=0;
for(int i=0;i<la;i++){
x=x*10+(int)s[i]-'0';
c[i]=x/p;
x%=p;
}
int k=0;
while(c[k]==0&&k<la-1){
k++;
}
for(int i=k;i<la;i++){
cout<<c[i];
}
}