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]);
	}
}
评论
发表评论