【NOIP算法】大数除法
我们这里研究的大数除法是:被除数是高精度数,除数是低精度数
分析
1)除法是从高位开始的,所以字符型被除数不用逆序转存到整数数组,顺序转存即可
2)余数*10+本位的数 作为下一个被除数
参考代码
#include <iostream>
#include <cstring>
using namespace std;
#define N 200
int main()
{
char a1[N],c1[N];
int a[N],c[N],lena,i,x=0,lenc,b;
memset(a,0,sizeof(a));
memset(c,0,sizeof(c));
cout<<"please input:";
cin.getline(a1, N);
cin>>b;
lena = strlen(a1);
for(i=0;i<=lena-1;i++)
{
a[i+1]=a1[i]-'0';
}
for(i=1;i<=lena;i++)
{
c[i]=(x*10+a[i])/b;
x=(x*10+a[i])%b;
}
lenc = 1;
while(c[lenc]==0&&lenc<lena) //删除前导0
{
lenc++;
}
for(i=lenc;i<=lena;i++)
{
cout<<c[i];
}
cout<<endl;
return 0;
}
报名我的信息学竞赛课(C++基础课程、NOIP算法课程、市赛、区赛集训课程),可以加微信????????????????????联系我,注明“姓名+**** 课程咨询”~