原 题:
高精除以低精。输入两个正整数,求它们的商(做整除)
算法分析:
采用按位相除法
代 码:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int a[100],c[100];
int main()
{char bcs[100];
int b,lena,lenc,x,i;
gets(bcs);
cin>>b;
lena=strlen(bcs);
for(i=0;i<=lena-1;i++) a[i+1]=bcs[i]-'0';//从高位开始处理,所以存储不同于加法减法乘法
//for(i=1;i<=lena;i++) cout<<a[i];
// cout<<endl; 验证输入处理有无问题
x=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)//商不可能比被除数位数多
lenc++;//lenc指向第一个非零数
//cout<<lenc<<'\n';非零的超始输出位数
for(i=lenc;i<=lena;i++) //输出重点看起始值,需体会,从非零位输出
cout<<c[i];
cout<<endl;
return 0;
}