1017. A除以B (20) PAT乙级真题

来源:互联网 发布:我知女人心南宫寒正序 编辑:程序博客网 时间:2024/06/11 02:47

1017. A除以B (20)

本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。

输入格式:

输入在1行中依次给出A和B,中间以1空格分隔。

输出格式:

在1行中依次输出Q和R,中间以1空格分隔。

输入样例:
123456789050987654321 7
输出样例:
17636684150141093474 3

因为本题已经说B是一位正整数了,所以充其量只能算是一个简单的高精度除法,很多高精度除法要考虑的问题都不

用去考虑了,数据那么大当然还是用字符串处理啦,只要像我们平时的除法一样算就好了。下面是我的代码:

#include<stdio.h>int main(void){    int b,d=0;    int i=0,f=0;    char a[1000];    do    {        scanf("%c",&a[i]);        i++;    }while(a[i-1]!=' ');    a[i-1]='\0'; //要注意'\0'和'\n'的区别哦,前面的是字符串结束的标志,后面的是换行    scanf("%d",&b);    if ((i==2)&&(a[0]-'0'<b)) printf("0"); //这里是处理像3/4这样的数据的    i=0;    if (a[0]-'0'>b) f=1;    do    {        d=d*10+a[i]-'0';        if (f!=0 || i!=0)        {            printf("%d",d/b);            f=1;        }        i++,d=d-d/b*b;    }while(a[i]!='\0');    printf(" %d\n",d%b);    return 0;}