PAT乙级1022

113 阅读1分钟

image.png 题目是很简单的,你找几个十进制数,将他手工转化为其他进制的数,记住这个过程,用代码模拟这个过程。首先是用数去除以要转化的进制,余数留下作为进制在此位上的数值,除数进到下一位,在做一次除法。以此类推,直到除不够进制。用一个数组去存,最后记得倒序,因为你是到这放进数组的。记得有一个测试点需要考虑为0的情况。

//foreverking
#include <cstdio>
#include <queue>
#include <algorithm>
#include <cstring>
#include <iostream>
#include <cmath>
using namespace std;

//输入两个非负 10 进制整数 A 和 B (≤2^30−1),输出 A+B 的 D (1<D≤10)进制数
int a,b,d;
int array[100];//存放进制的数
int main(){
    cin >> a >> b >> d;
    long s = a + b;//太大了,转化为string
    int i = 0;
    if(s == 0){
        cout << 0;
        return 0;
    }
    while(s != 0){
        //代码
        array[i++] = s % d;
        s /= d;
        }
    for(int j = i - 1; j >= 0; j--){
            //代码
            cout << array[j];
            }

    return 0;
    
}

题目链接