题目链接:
https://pintia.cn/problem-sets/994805342720868352/problems/994805470349344768
题目大意:
将给出的三个0~168的十进制数转换十三进制数,其中,10,11,12分别用A,B,C表示。本题较为简单,直接给出代码。
参考代码:
#include <iostream>
using namespace std;
int main()
{
int A[3][3] = {0} ;
int num;
for(int i = 0; i < 3; i++){
scanf("%d",&num);
int pos = 0;
while(num){
A[i][pos++] = num % 13;
num /=13;
}
}
printf("#");
for(int i = 0; i < 3; i++){
for(int j = 1; j >= 0; j--){
switch(A[i][j]){
case 10:
printf("A");break;
case 11:
printf("B");break;
case 12:
printf("C");break;
default:
break;
}
if(A[i][j] < 10)
printf("%d",A[i][j]);
}
}
return 0;
}
下面给出参考算法笔记的代码,确实简单很多。
#include <cstdio>
char map[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", map[r/13], map[r%13]);
printf("%c%c", map[g/13], map[g%13]);
printf("%c%c", map[b/13], map[b%13]);
return 0;
}