PAT乙级题1017.A除以B

来源:互联网 发布:我给男闺蜜飞机知乎 编辑:程序博客网 时间:2024/06/01 10:11

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
解题思路:被除数为字符数组,除数为一位整数,从数组的第一位开始每个字符转化为整数然后进行运算,再将结果存入新的数组,因为除数是一位整数,
所以被除数最大为两位数字,每次取商,再取余再加和下一位,直到运算到数组尾,特判一下如果长度为1的时候,并且商为0,直接输出0,余数为除数本身。
贴代码:
#include<stdio.h>#include<string.h>int main(){char a[1001],b[1005];int i,len,temp=0,n,R,count=0;scanf("%s%d",a,&n);len = strlen(a);temp = a[0] - '0';if(temp >= n){b[count] = temp / n +'0';count ++;}for(i = 1;i < len;i++){R = temp % n;temp = R*10 + a[i] - '0';b[count] = temp / n + '0';count ++;}b[count] = '\0';R = temp % n;if(len == 1 && temp < n)printf("0 %d\n",a[0]-'0');elseprintf("%s %d\n",b,R);return 0;}


原创粉丝点击