1.先说一下这道题的坑点:
(1)我猜测第四个数据可能三个数中有一个是0,因为如果套模板的话,会有一个while(x!=0)的情况,然后如果没特判,数据四就会过不去
(2)注意题目中说的是1-dight long意思是一位数的长度,无论这个数是数字好是字母,如果结果就一位,那么前面加上一位0
(3)这条和题目数据无关,但确实令我难受,题目明确告诉了,结果是六位数,每种颜色占两位,所以想他这么写就好了,,,,https://blog.csdn.net/yinghuoai/article/details/80050366
2.我的代码(ac)
#include <iostream>
#include <string>
#include <stack>
using namespace std;
string tool(int x)
{
stack<char>ans;
while(x!=0)
{
int a=x/13;
int b=x%13;
if(b>=0&&b<=9)
{
char c=(char)(b+'0');
ans.push(c);
}
else
{
char c=(char)(b-10+'A');
ans.push(c);
}
x=a;
}
string ss;
if(ans.size()==1)
ss=ss+'0';
while( !ans.empty() )
{
ss=ss+ans.top();
ans.pop();
}
return ss;
}
int main()
{
int a,b,c;
string ans1,ans2,ans3;
cin>>a>>b>>c;
//特判下等于0的情况
if(a==0)
ans1="00";
else
ans1=tool(a);
if(b==0)
ans2="00";
else
ans2=tool(b);
if(c==0)
ans3="00";
else
ans3=tool(c);
cout<<'#'<<ans1<<ans2<<ans3<<endl;
return 0;
}