1027 Colors in Mars (20 分)

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

思路

  1. 讲给出的10进制RGB转换为13进制,10~12分别对用A,B,C
  2. 输出转换后的RBG,高位不足时补0

代码

#include<stdio.h>
int main(){
	int r,g,b;
	int z1[5], z2[5], z3[5];
	char s[15] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C'};
	scanf("%d%d%d", &r, &g, &b);
	int num1 = 0;
	int num2 = 0;
	int num3 = 0;
	do{
		z1[num1++] = r % 13;
		r = r / 13;
	}while(r != 0);
	do{
		z2[num2++] = g % 13;
		g = g / 13;
	}while(g != 0);
	do{
		z3[num3++] = b % 13;
		b = b / 13;
	}while(b != 0);
	printf("#");
	if(num1 == 1) printf("0%c", s[z1[0]]);
	else printf("%c%c", s[z1[1]], s[z1[0]]);
	if(num2 == 1) printf("0%c",s[z2[0]]);
	else printf("%c%c", s[z2[1]], s[z2[0]]);
	if(num3 == 1) printf("0%c", s[z3[0]]);
	else printf("%c%c", s[z3[1]], s[z3[0]]);
	return 0; 
}

参考代码

  1. 就两位数没必要用do while 循环

    z[0] = r(b,g)/13;

    z[1] = r(b,g)%13;

#include<cstdio>
char radix[13] = {
    '0','1','2','3','4','5','6','7','8','9','A','B','C'
};

int main(){
    int r, g, b;
    scanf("%d%d%d", &r, &g, &b);
    printf("#");
    printf("%c%c", radix[r / 13], radix[r % 13]);
    printf("%c%c", radix[g / 13], radix[g % 13]);
    printf("%c%c", radix[b / 13], radix[b % 13]);
    return 0;
}

posted @ 2021-08-03 18:08  shiff  阅读(33)  评论(0编辑  收藏  举报