PAT乙级 1022.D进制的A+B

247

进制转换

题目


原题链接

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

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

输出格式:
输出A+B的D进制数。

输入样例:
123 456 8

输出样例:
1103


解析


相加后用取余数的方法转换进制

代码


C++解法


#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

string toD(int num, int D) {
    string ans = "";
    do {
        ans += (num % D)+'0';
        num /= D;
    } while (num != 0);
    reverse(ans.begin(),ans.end());
    return ans;
}
int main() {
    int A, B, D;
    cin >> A >> B >> D;
    cout << toD(A + B, D) << endl;
    return 0;
}



Python解法


def toD(num, D):
    ans = ""
    while 1:
        ans = str(num % D) + ans
        num //= D
        if num==0:
            break
    return ans


(A, B, D) = [int(i)for i in input().split(" ")]
print(toD(A + B, D))




发布评论
  • 点击查看/关闭被识别为广告的评论