1.题目描述

nowcoder费了很大劲,终于和地外文明联系上。我们地球人通常有10根手指,因此我们习惯用10进制的数,而外星人的手指有16跟、8根等不等的数目,因此他们使用与我们不同的进制。为了方便沟通,需要你开发一款工具,把地球人的10进制转换成外星人的R进制形式。

2.输入描述:

输入有多行。
每行包括两个正整数n和R,其中2≤R≤16。
输入直到文件结束为止。

3.输出描述:

对于每个用例,输出n对应的R进制形式。
超过10进制的数,10用A表示、11用B表示,依次类推。

4.输入例子:

1989 2
1119 16

5.输出例子:

11111000101
45F

6.解题思路:

1、这实际就是一个进制转化题,十进制的转化是非常简单的,利用辗转相除法求余数即可
2、首先我们要根据目标进制取余数,因为包含目标进制存在八进制、十六进制,也就可能会出现字母,所以我们用一个字符串来存储目标进制
3、每次取余,判断范围后转化为字符类型存入字符串数组,然后相除
4、最后倒序输出字符串数组,即可得到目标进制

7.源代码:

#include<stdio.h>
int main()
{
	int n,r;
	char s[100];
	while(scanf("%d %d",&n,&r)!=-1)
	{
		int i,k=0;
		while(n)
		{
			if(n%r>=0&&n%r<=9)
				s[k++]=n%r+48;
			else
				s[k++]=n%r-10+'A';
			n=n/r;
		}
		for(i=k-1;i>=0;i--)
			printf("%c",s[i]);
		printf("\n");
		
	}
	return 0;
}