码迷,mamicode.com
首页 > 其他好文 > 详细

PAT 1027 Colors in Mars (20分)

时间:2020-07-18 22:54:16      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:字符串拼接   std   c_str   argv   dig   space   convert   scanf   temp   

题目

题目链接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分)

标签:字符串拼接   std   c_str   argv   dig   space   convert   scanf   temp   

原文地址:https://www.cnblogs.com/houzm/p/13337194.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!