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 Specification:
Each input file contains one test case which occupies a line containing the three decimal color values.
Output Specification:
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 its left.
Sample Input:
15 43 71
Sample Output:
#123456
思路:1.运用进制转换算法,将10进制数转换成13进制数
2.注意某个颜色转换后为一个数字的话,要补前导0
3.c++string对“+”进行了重载,s+=‘a’,s+="a",s.insert(s.end(),1,'a'),s.insert(s.end(),"a")效果相同
AC代码
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
int a[3];
string s="#",temp;
for(int i=0;i<3;i++)
cin>>a[i];
for(int i=0;i<3;i++)
{
temp.clear();
if(a[i]==0)
temp="00";
while(a[i]>0)
{
if(a[i]%13>=10)
temp.insert(temp.end(),1,'A'+a[i]%13-10);
else
temp+=to_string(a[i]%13);
a[i]/=13;
}
if(temp.size()==1)
temp.insert(0,1,'0');
else
reverse(temp.begin(),temp.end());
s+=temp;
}
cout<<s;
return 0;
}