【PAT B1022】D进制的A+B(20分)

题目链接:https://pintia.cn/problem-sets/994805260223102976/problems/994805299301433344
题目分值:20分
题目类型:进制转换 简单模拟

题目描述

输入两个非负10进制整数A和B(≤2^​30−1),输出A+B的D(1<D≤10)进制数。

输入格式

输入在一行中依次给出 3 个整数 A、B 和 D。

输出格式

输出 A+B 的 D 进制数

输入样例

123 456 8

输出样例

1103

思路分析

  • 属于【模板题】:十进制数转Q进制
  • 先计算十进制的和,再转换进制

注意点

  • 短除法结果输出是逆序输出的,不清楚的可以在纸上进行一下手动的模拟

参考代码

C/C++

#include<stdio.h>
int ans[35]={0};    //    存储最终答案 
int main()
{
    int a,b,d;        //两个非负整数和进制
    scanf("%d%d%d",&a,&b,&d) ;
    int sum = a + b;
    int n = 0;        //存储最后进制数的位数 
    
    do                //进制换算 
    {
        ans[n++] = sum % d;
        sum /= d;
    }while(sum!=0);
    
    for(int i=n-1;i>=0;i--)    //逆序输出 
        printf("%d",ans[i]);
        
    return 0;
} 
文章目录