PAT 1027 Colors in Mars (20分)
Posted houzm
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAT 1027 Colors in Mars (20分)相关的知识,希望对你有一定的参考价值。
题目
题目链接PAT A1027 Colors in Mars (20分)
解题思路
思路01
1 进制转换。十进制转换为十三进制
2 如果转换后是一位前面补充一位0
思路02
根据题目已知,十进制数字最大为168(对应十三进制为CC),可知转换为十三进制后最大为CC,所以转换后一定是两位,x/13 x%13(x为十进制数)
易错点
当某种颜色转换为十三进制后,如果是一位数字,需在前面补充一位0
知识点
1 进制转换
2 字符串拼接字符串
单词
digit 数字(可数)
decimal 十进制的;小数
radix 基数;根
Code
Code 01
#include <iostream>
#include <algorithm>
using namespace std;
const int p = 13;
/*
十进制转十三进制
*/
string convert(int x){
string s;
int temp;
do{
temp = x%p;
if(temp>=10)s+=temp-10+‘A‘;
else s+=temp+‘0‘;
x /= p;
}while(x!=0);
if(s.length()==1)s.append("0");
reverse(s.begin(),s.end());
return s;
}
int main(int argc,char * argv[]) {
int r,g,b;
scanf("%d%d%d",&r,&g,&b);
string rs = convert(r);
string gs = convert(g);
string bs = convert(b);
rs.append(gs).append(bs);
printf("#%s",rs.c_str());
return 0;
}
Code 02
#include <iostream>
#include <string>
using namespace std;
/*
1. char 字符数组定义初始化
*/
int main(int argc,char *argv[]) {
char c[14]= {"0123456789ABC"};
int num;
cout<<"#";
for(int i=0; i<3; i++) {
cin>>num;
printf("%c%c",c[num/13],c[num%13]);
}
return 0;
}
以上是关于PAT 1027 Colors in Mars (20分)的主要内容,如果未能解决你的问题,请参考以下文章
PAT 甲级 1027 Colors in Mars (20 分)
PAT 甲级 1027 Colors in Mars (20 分)(简单,进制转换)