寒假准备天梯赛,Basic算是水题集吧,每天更新。
1017 A除以B (20分)
本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立。
思路:本来想用java大数,居然5个点全部超时,发现时限是100ms,那就老老实实c++模拟除法。因为除数是1位,挺简单的。
#include<bits/stdc++.h>
using namespace std;
char a[1005],c[1005];
int main(){
int b,tmp=0;
cin>>a>>b;
for(int i=0;a[i];++i){
c[i]=((a[i]-'0')+tmp)/b+'0';
tmp=((a[i]-'0')+tmp)%b*10;
}
for(int i=0;c[i];++i){
if(c[i]!='0'){
cout<<c+i<<" "<<tmp/10;
return 0;
}
}
cout<<"0 "<<tmp/10;
}
说明:tmp是这一位的余*10,算这一位的除法时,要把这一位加上前一位的tmp再除