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

PAT A1027 Colors in Mars

PAT 甲级 1027 Colors in Mars (20 分)

PAT 甲级 1027 Colors in Mars (20 分)(简单,进制转换)

PAT Advanced 1027 Colors in Mars (20分)

PAT (Advanced Level) 1027. Colors in Mars (20)