查看: 600|回复: 0

PAT乙级真题1017. A除以B (20)(2016-5-2)

[复制链接]
  • TA的每日心情
    开心
    2016-8-13 12:47
  • 签到天数: 132 天

    [LV.7]常住居民III

    参加活动: 0

    组织活动: 0

    发表于 2016-5-2 22:08:48 | 显示全部楼层 |阅读模式
    本帖最后由 fengyu_wollon 于 2016-5-8 00:59 编辑

    1017. A除以B (20)
    时间限制
    100 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B

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

    输入格式:
    输入在1行中依次给出A和B,中间以1空格分隔。
    输出格式:
    在1行中依次输出Q和R,中间以1空格分隔。
    输入样例:
    123456789050987654321 7
    输出样例:
    17636684150141093474 3

    code
    1. /*
    2. 关键在如何计算字符串除法,
    3. 因为这里限定除数为10以内的一位数,
    4. 所以设计的时候,我这里把B定义为int型整数

    5. */
    6. #include<stdio.h>
    7. #include<string.h>
    8. int main()
    9. {
    10.     int B;
    11.     int i=0,temp1=0,temp2=0,sb=0,n=0;
    12.     char A[1001],a[1001];
    13.     char *p;
    14.     scanf("%s %d",A,&B);
    15.     n=strlen(A);
    16.     for(i=0;i<n;i++)//这里开始计算
    17.     {
    18.         temp2=(int)(A[i]-'0');
    19.         sb=temp1*10+temp2;
    20.         if(sb<B)
    21.         {
    22.             a[i]='0';
    23.             temp1=sb;
    24.         }
    25.         else if(sb>=B)
    26.         {
    27.             temp1=sb%B;
    28.             a[i]=(char)(((sb-temp1)/B)+48);
    29.         }
    30.     }
    31.     a[i]='\0';//因为是按下标一一赋值,所以最后加上一个‘\0’
    32.     p=a;
    33.     while((*p)=='0')
    34.         p++;
    35.     printf("%s %d",p,temp1);
    36.     return 0;
    37. }
    复制代码

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    小黑屋|手机版|Archiver|空中社区  

    GMT+8, 2017-9-26 17:03 , Processed in 0.109357 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表