PAT-B 1017. A除以B

来源:互联网 发布:海尔电视软件下载 编辑:程序博客网 时间:2024/06/05 01:10

本题要求计算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>#include<string.h>char a[1001];char b;char q[1001]={'0'};char r;int main(){    scanf("%s %c",a,&b);    //scanf(" %c",b);    int len = strlen(a);    int i=0;    char tmp;    for(i=0;i<len;i++)    {        tmp = a[i]-'0';        if(i==0)        {            a[i]=tmp%(b-'0')+'0';            q[i]=tmp/(b-'0')+'0';        }        else         {            //if(a[i-1]=='0')            //{            //  a[i]=(tmp)%(b-'0')+'0';            //  q[i]=(tmp)/(b-'0')+'0';            //}                 //else if(a[i-1]!='0')            a[i]=((a[i-1]-'0')*10+tmp)%(b-'0')+'0';                        q[i]=((a[i-1]-'0')*10+tmp)/(b-'0')+'0';            a[i-1]='0';             }        /*if(a[i]>=b||i==(len-1))        {            tmp = a[i];            a[i]=(a[i]-'0')%(b-'0')+'0';            q[i]=(tmp-'0')/(b-'0')+'0';        }        else        {            //a[i+1]=((a[i]-'0')*10+a[i+1]-'0')%(b -'0')+'0';            tmp = a[i+1];            a[i+1]=((a[i]-'0')*10+(a[i+1]-'0'))%(b-'0')+'0';            q[i+1]=((a[i]-'0')*10+(tmp-'0'))/(b-'0')+'0';            a[i]='0';        }*/    }    q[1000]='\0';    //printf("%s\n%s",q,a);    char *p=q;    while(*p=='0')        p++;    if(*p=='\0')        putchar('0');    while(*p!='\0')    {        putchar(*p);        p++;    }    putchar(' ');    p=a;        while(*p=='0')                p++;    if(*p==0)        putchar('0');    while(*p!='\0')        {                putchar(*p);                p++;        }    return 0;}
0 0
原创粉丝点击