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
代码:
对进制转换没什么印象了> <
十进制转X进制,即不断除以X取余数,直到该十进制为0,最后再逆序输出余数们。
X进制转十进制,即从右到左,每一个数字依次乘以10^0,10^1,10^2...,再相加。
十以上的进制,除了数字,还有字母。
“The only difference is that they use radix 13 (0-9 and A-C) instead of 16.” 看这句话我以为是16进制转13进制,换算了下才发现是10进制转13进制。 给定数字的范围在0-168,x = a*13^1 + b*13^0 ,当a=13(13进制的C)时,x>168,只需两位数字即可表示R or G or B。所以无需考虑逆序输出,直接/13和%13。
#include<stdio.h>
int main()
{
char s[13] = {'0','1','2','3','4','5','6','7','8','9','A','B','C'};
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
printf("#");
printf("%c%c",s[a/13],s[a%13]);
printf("%c%c",s[b/13],s[b%13]);
printf("%c%c",s[c/13],s[c%13]);
}