1017. A除以B (20)
时间限制
100 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue
本题要求计算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的情况