点点滴滴

发现不足,弥补不足,持续的努力~

1027. Colors in Mars (20)

1027. Colors in Mars (20)

时间限制
400 ms
内存限制
65536 kB
代码长度限制
16000 B
判题程序
Standard
作者
CHEN, Yue

People in Mars represent the colors in their computers in a similar way as the Earth people. That is, a color is represented by a 6-digit number, where the first 2 digits are for Red, the middle 2 digits for Green, and the last 2 digits for Blue. The only difference is that they use radix 13 (0-9 and A-C) instead of 16. Now given a color in three decimal numbers (each between 0 and 168), you are supposed to output their Mars RGB values.

Input

Each input file contains one test case which occupies a line containing the three decimal color values.

Output

For each test case you should output the Mars RGB value in the following format: first output "#", then followed by a 6-digit number where all the English characters must be upper-cased. If a single color is only 1-digit long, you must print a "0" to the left.

Sample Input
15 43 71
Sample Output
#123456

这个题很简单,但是我能说我刚开始没理解题意吗?后来看了网上的解释,才知道这题其实就是进制转换和符合要求的格式输出,题目不难,代码也实现了,但是代码确实不优

//功能是实现了,代码确实不优美
int main()
{
	int r, g, b;
	int d = 13;
	cin >> r >> g >> b;
	vector<int> rnum;
	int rshang = r / d;
	int ryushu = r%d;
	rnum.push_back(ryushu);
	while (rshang != 0)
	{
		ryushu = rshang % d;
		rnum.push_back(ryushu);
		rshang = rshang / d;
	}	

	vector<int> gnum;
	int gshang = g / d;
	int gyushu = g%d;
	gnum.push_back(gyushu);
	while (gshang != 0)
	{
		gyushu = gshang % d;
		gnum.push_back(gyushu);
		gshang = gshang / d;
	}

	vector<int> bnum;
	int bshang = b / d;
	int byushu = b%d;
	bnum.push_back(byushu);
	while (bshang != 0)
	{
		byushu = bshang %  d;
		bnum.push_back(byushu);
		bshang = bshang / d;
	}

	cout << "#";
	if (rnum.size() == 1)
	{
		int num = rnum[0];
		cout << 0;
		if (num < 10)
		{
			cout << num;
		}
		else if (num==10)
		{
			cout << "A";
		}
		else if (num == 11){ cout << "B"; }
		else if (num == 12){ cout << "C"; }
	}
	else
	{
		for (int i = rnum.size() - 1; i >= 0; i--)
		{
			int num = rnum[i];
			if (num<10)
			{
				cout << num;
			}
			else if (num == 10){ cout << "A"; }
			else if (num == 11){ cout << "B"; }
			else if (num == 12){ cout << "C"; }
		}
	}

	
	if (gnum.size() == 1)
	{
		int num = gnum[0];
		cout << 0;
		if (num < 10)
		{
			cout << num;
		}
		else if (num == 10)
		{
			cout << "A";
		}
		else if (num == 11){ cout << "B"; }
		else if (num == 12){ cout << "C"; }
	}
	else
	{
		for (int i = gnum.size() - 1; i >= 0; i--)
		{
			int num = gnum[i];
			if (num<10)
			{
				cout << num;
			}
			else if (num == 10){ cout << "A"; }
			else if (num == 11){ cout << "B"; }
			else if (num == 12){ cout << "C"; }
		}
	}

	if (bnum.size() == 1)
	{
		int num = bnum[0];
		cout << 0;
		if (num < 10)
		{
			cout << num;
		}
		else if (num == 10)
		{
			cout << "A";
		}
		else if (num == 11){ cout << "B"; }
		else if (num == 12){ cout << "C"; }
	}
	else
	{
		for (int i = bnum.size() - 1; i >= 0; i--)
		{
			int num = bnum[i];
			if (num<10)
			{
				cout << num;
			}
			else if (num == 10){ cout << "A"; }
			else if (num == 11){ cout << "B"; }
			else if (num == 12){ cout << "C"; }
		}
	}
	return 0;
}

别人的简洁代码http://blog.csdn.net/realxuejin/article/details/10183487

#include<vector>
#include <sstream>
#include<cmath>
#include<iomanip>
#include<iostream>
#include <ctype.h>
#include <stdlib.h>
#include <algorithm>

using namespace std;

char red[2];
char green[2];
char blue[2];

void change(int a, char color[2], int d)
{
	int i = 0;
	do
	{
		if ((a%d) < 10)
		{
			color[i++] = ((a%d) + '0');
		}
		else
		{
			color[i++] = (a%d) + 'A' - 10;
		}		
	} while (a != 0);
}

int main()
{
	memset(red, '0', sizeof(red));//用memset函数进行内存初始化
	memset(green,'0',sizeof(green));
	memset(blue,'0',sizeof(blue));

	int d = 13;
	int a, b, c;
	cin >> a >> b >> c;
	change(a, red, d);
	change(b, green, d);
	change(c, blue, d);
	cout << "#";
	cout << red[1] << red[0];
	cout << green[1] << green[0];
	cout << blue[1] << blue[0] << endl;

	return 0;
}


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fynjy/article/details/46829565
个人分类: Advanced PAT C++
上一篇【再认真理解】1003. Emergency (25) Dijastra最优路径算法修改版求解
下一篇【再思考】1010. Radix (25)
想对作者说点什么? 我来说一句

Toony Colors Pro 2 2.3.382

2017年12月07日 23.98MB 下载

安卓视频Mars

2017年12月07日 49B 下载

屏幕取色工具Colors_CHS

2017年04月07日 1.4MB 下载

Mars.jar汇编器

2017年12月04日 3.43MB 下载

微信mars开源项目

2017年09月24日 8.01MB 下载

MarsMARS MIPS simulator

2014年10月25日 3.13MB 下载

Mars4.4 MIPS simulator

2017年06月18日 3.06MB 下载

超详细Mars安卓开发教学视频

2016年03月04日 83B 下载

mars老师视频源码

2011年11月16日 6.88MB 下载

没有更多推荐了,返回首页

关闭
关闭