C++ 信息学奥赛 1161

#include <iostream>
using namespace std;

void trans(int num, int bin)
{
	// 进行进制除法获取商和余数
	int dis = num / bin;	// 商
	int rem	= num % bin;	// 余数
	
	// 如果商不比进制数小,说明还可以继续进制除法,递归调用
	// 商比进制数小,说明没办法继续除,本商即为进制除法的末尾,需要输出
	if(dis >= bin)
		trans(dis, bin);
	else
	{
		/*
		数字只有0-9,10以后与字母的对应关系:
		数字	字母	ASCII码值
		10		A	65
		11		B	66
		12		C	67
		...
		可以看出其差值为55,因此超过10的数字应+55转字符输出	
		*/
		if(dis<10) cout << dis;
		else cout << char(dis+55);
	}
	
	// 不管是否继续递归,本次的余数都应输出,且在递归之后
	if(rem < 10) cout << rem;
	else cout << char(rem+55);
	
}

int main()
{
	int num,bin;
	cin >> num >> bin;
	trans(num, bin);
	return 0;
}

  

posted @ 2024-09-18 15:33  我信你个鬼!  阅读(3)  评论(0编辑  收藏  举报