九度 题目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 <stdio.h>
#include <stdlib.h>

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<stdio.h>
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;
 }



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值