PAT 乙级 1017 A除以B (20 分)

题目

本题要求计算 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 
#include 
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

你可能感兴趣的:(PAT 乙级 1017 A除以B (20 分))