题目要求将[0,168]范围内的三个十进制整数转换成13进制数,可以使用进制转换函数来实现进制转换输出,但是要特别考虑对0的处理(有两个测试用例通过不了,暂时还没有找到问题)。
#include <stdio.h>
#include <stdlib.h>
const char radix[13]={'0','1','2','3','4','5','6','7','8','9','A','B','C'};
void Reverse(int Color[],int &color,int &num){
do{
Color[num++]=color%13;
color/=13;
}while(color!=0);
}
void Output(int Color[],int num){
if(num==1){
printf("00");
}
else{
for(int i=num-1;i>=0;i--){
printf("%c",radix[Color[i]]);
}
}
}
int main(){
int R,G,B;
int r[40],g[40],b[40];
int numR=0,numG=0,numB=0;
scanf("%d %d %d",&R,&G,&B);
Reverse(r,R,numR);
Reverse(g,G,numG);
Reverse(b,B,numB);
printf("#");
Output(r,numR);
Output(g,numG);
Output(b,numB);
system("pause");
return 0;
}