1027 Colors in Mars (20 分)
People in Mars represent the colors in their computers in a similar way as the Earth people. That is, a color is represented by a 6-digit number, where the first 2 digits are for Red
, the middle 2 digits for Green
, and the last 2 digits for Blue
. The only difference is that they use radix 13 (0-9 and A-C) instead of 16. Now given a color in three decimal numbers (each between 0 and 168), you are supposed to output their Mars RGB values.
Input Specification:
Each input file contains one test case which occupies a line containing the three decimal color values.
Output Specification:
For each test case you should output the Mars RGB value in the following format: first output #
, then followed by a 6-digit number where all the English characters must be upper-cased. If a single color is only 1-digit long, you must print a 0
to its left.
Sample Input:
15 43 71
Sample Output:
#123456
我的思路
这题表面上是颜色RGB转换,实际就是10进制数转13进制数。其中,大于9的数字用ABC替代,我采用ASCII码的方式,A为65。
n = 11;
printf("%c", n%10+65);
//输出B
我的代码
#include <cstdio>
//进制转换函数
int ext(int n)
{
int i=0;
int a[100]={0};
if (n==0)
{ //如果是0,直接输出00
printf("00");
return 1;
}
while(n!=0)
{ //转换成十三进制
a[i] = n%13;
n = n/13;
i++;
}
//输出
if (i==1) printf("0"); //如果转换后不足两位数,则左边输出0
for (int j=i-1; j>=0; j--)
{
if(a[j]<10)
{
printf("%d", a[j]);
} else
{
printf("%c", a[j]%10+65); //把10/11/12变成A/B/C
}
}
return 1;
}
int main()
{
int r,g,b;
scanf("%d %d %d", &r, &g, &b);
printf("#");
ext(r);ext(g);ext(b);
return 0;
}