题目
本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立。
输入格式
输入在一行中依次给出 A 和 B,中间以 1 空格分隔。
输出格式
在一行中依次输出 Q 和 R,中间以 1 空格分隔。
输入样例
123456789050987654321 7
输出样例
17636684150141093474 3
思路分析:
首先从题目给出不多于1000位的数字,就表明了只能用char型的字符串存储这个数字。根据我们做除法运算的习惯,从被除数的最高位开始运算,每得到一个商,就立刻输出这个商,如果有余数,就利用这个余数×10+次高位作为下次运算的被除数。代码就是模拟了人们做除法运算的过程。
应当注意的是,char型的字符num转换为数字num的代码:num - '0'
代码
#include <stdio.h>
#include <string.h>
int main()
{
int B,Q,R=0;
char str[1001];
scanf("%s %d",str,&B);
int length = strlen(str);
Q = (str[0]-'0')/B;
if (length ==1 ||( length>1 && Q!=0))
printf("%d",Q);
for(int i=1;i<length;i++)
{
Q = ((R*10)+str[i]-'0')/B;
printf("%d",Q);
R = (R*10)+str[i]-'0')%B;
}
printf(" %d",R);
return 0;
}