PAT甲级刷题实录——1027
2020-02-14
原题链接
https://pintia.cn/problem-sets/994805342720868352/problems/994805470349344768
思路
经历了上一题难上天的题目,这题就简单的一批。就是将十进制转换为 13 进制,进制转换我们之前已经做过好多回了,就是不断做除法取余数。代码如下:
代码
#include <iostream>
#include <vector>
using namespace std;
char transfer(int num);
void calculateAndOutput(int num);
int main()
{
int dr, dg, db;
cin >> dr >> dg >> db;
cout << '#';
calculateAndOutput(dr);
calculateAndOutput(dg);
calculateAndOutput(db);
}
char transfer(int num)
{
if (num < 10)
return '0' + num;
else if (num == 10)
return 'A';
else if (num == 11)
return 'B';
else if (num == 12)
return 'C';
}
void calculateAndOutput(int num)
{
vector<int> r;
while (num / 13 != 0)
{
r.push_back(num % 13);
num /= 13;
}
r.push_back(num);
for (int i = 1; i >= 0; i--)
{
cout << transfer(r[i]);
}
}