题目


解法1

点击查看代码
#include<iostream>
#include<string>
using namespace std;

string transform(int n){
    string ans = "";
    if (n == 0) {
        return "00"; // 处理输入为0的情况
    }
    while(n > 0){
        if(n % 13 < 10){
            ans = char(n % 13 + '0') + ans;
        } else {
            ans = char(n % 13 - 10 + 'A') + ans;
        }
        n /= 13;
    }
    if (ans.length() == 1) {
        ans = "0" + ans; // 处理单数字情况
    }
    return ans;
}

int main(){
    int r, g, b;
    cin >> r >> g >> b;

    string sr = transform(r);
    string sg = transform(g);
    string sb = transform(b);

    cout << "#" << sr << sg << sb << endl;

    return 0;
}
---

一些心得

1、题目暗示了输出可能有字母,所以我们用string存储进制转化后的数,而不用vector

2、要考虑特殊情况:
如果转换后的结果是单数字,需要在前面补零;
如果输入的颜色值为0,转换后应该输出00