题目

解法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
浙公网安备 33010602011771号