PAT (Basic Level):1017 A除以B (20)
2018-06-08 本文已影响0人
沙_狸
题目信息
本题要求计算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<stdio.h>
int main(){
char a[1000],q[1000];int b,r,cnt=0,temp=0;//cnt是商的位数
scanf("%s %d",a,&b);
for(int i=0;i<strlen(a);i++){
temp+=a[i]-'0';
q[cnt++]=temp/b+'0';
temp=(temp%b)*10;
}
r=temp/10;
if(q[0]!='0'){
for(int i=0;i<cnt;i++) printf("%c",q[i]);
printf(" %d",r);
}else if(cnt==1){
printf("0 %d",r);
}else{
for(int i=1;i<cnt;i++) printf("%c",q[i]);
printf(" %d",r);
}
return 0;
}