1017. A除以B (20)
本題要求計算A/B,其中A是不超過1000位的正整數,B是1位正整數。你需要輸出商數Q和餘數R,使得A = B * Q + R成立。
輸入格式:
輸入在1行中依次給出A和B,中間以1空格分隔。
輸出格式:
在1行中依次輸出Q和R,中間以1空格分隔。
輸入樣例:123456789050987654321 7輸出樣例:
17636684150141093474 3
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
int A[10000],B,Q[10000],R=0;
char c;
A[0]=0;Q[0]=0;
int flag_BbigerthanA=1;
while((c=getchar())!=' ')
A[++A[0]]=c-'0';
B=getchar()-'0';
for(int i=1;i<=A[0];++i){
if(R*10+A[i]>=B){
Q[++Q[0]]=(R*10+A[i])/B;
R=R*10+A[i]-(R*10+A[i])/B*B;
flag_BbigerthanA=0;
}
else{
R=A[i];
if(i!=1)
Q[++Q[0]]=0;
}
}
for(int i=1;i<=Q[0];++i)
printf("%d",Q[i]);
if(flag_BbigerthanA)printf("0 %d\n",R);
else printf(" %d\n",R);
return 0;
}
乍一眼看還以爲寫大數除法,不過還好這個除數是個位數
WA一次是因爲沒考慮到B>A的情況