九度 题目1026:又一版 A+B

一.题目描述:
输入两个不超过整型定义的非负10进制整数A和B(<=231-1),输出A+B的m (1 < m <10)进制数。

输入:
输入格式:测试输入包含若干测试用例。每个测试用例占一行,给出m和A,B的值。
 当m为0时输入结束。
输出:
输出格式:每个测试用例的输出占一行,输出A+B的m进制数。

样例输入:

8 1300 48
2 1 7
0
样例输出:

2504
1000



二.题目分析

  对于做这种水题,最重要的是要走心,千万不要忘记0,0测试样例,再次感慨一下while do和do whie,终于感受到了强大的区别.

三.代码

1.while do

#include 
#include 

int main()
{
    long long A,B,x;
    int i,j,m,a[100];

    while(1)
    {
        scanf("%d",&m);
        if(m==0)
            break;

        scanf("%lld%lld",&A,&B);  
        x=A+B;
        i=0;
        while(x)
        {
            a[i]=x%m;
            x /=m;
            i++;
        }

        if(i==0)     //当x==0时,循环并没有执行         
            printf("0\n");
        else
        {
            for(j=i-1;j>=0;j--)
                printf("%d",a[j]);
            printf("\n");
        }


    }
    return 0;
}

2. do while

#include
int main()
 {
     long long a,b;
     int m,i;
     while(scanf("%d",&m)!=EOF){
         if(m==0) break;
         scanf("%lld%lld",&a,&b);
         a=a+b;
         int ans[50],size=0;
         do{                           //循环至少执行一次,不需要特殊处理
             ans[size++]=a%m;
             a/=m;
         }while(a!=0);
         for(i=size-1;i>=0;i--){
             printf("%d",ans[i]);
         }
         printf("\n");
     }
     return 0;
 }



你可能感兴趣的:(九度OJ)