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;
}

测试结果

image.png
上一篇 下一篇

猜你喜欢

热点阅读