这类题目是C++标准模板库的使用,是重点知识。
题目描述如下:
题目大致意思与大致思路:
这道题目其实就是一道10进制与13进制之间的进制转换的题目,如果输入的是10进制,则将十进制转换为13进制,根据所给出的十进制的取值范围,转换为13进制后,最多只有两位,然后根据所给出的对应关系,进行转换即可。如果输入的是字符串,则根据对应关系将字符串转换成对应整数后,再转换成十进制数即可。
提交结果:
有两个测试用例未通过,放在第二轮刷题时解决。
提交的代码如下:
#include<iostream>
#include<string>
using namespace std;
int main()
{
string low[13]={"tret","jan","feb","mar","apr","may","jun","jly","aug","sep","oct","nov","dec"};
string high[13]={"tret","tam","hel","maa","huh","tou","kes","hei","elo","syy","lok","mer","jou"};
int n;
cin>>n;
getchar();
for(int i=0;i<n;i++)
{
string str;
getline(cin,str);
if(str[0]>='0'&&str[0]<='9')
{
int temp=atoi(str.c_str());
int l=temp%13;
temp=temp/13;
if(temp!=0)
{
int h=temp%13;
cout<<high[h]<<" "<<low[l]<<endl;
}
else
{
cout<<low[l]<<endl;
}
}
else
{
if(str.find(' ')==string::npos)
{
for(int i=0;i<13;i++)
{
if(str==low[i])
{
cout<<i<<endl;
break;
}
if(str==high[i])
{
cout<<i*13<<endl;
break;
}
}
}
else
{
int h,l,sum;
string hh,ll;
hh=str.substr(0,str.find(' '));
ll=str.substr(str.find(' ')+1);
for(int i=0;i<13;i++)
{
if(hh==high[i])
{
h=i*13;
}
if(ll==low[i])
l=i;
}
sum=h+l;
cout<<sum<<endl;
}
}
}
}
本次提交后,累计得分为1243。