标签:img 思路 char* AC stdio.h 乙级 com cin new
输入样例:
4
29
5
elo nov
tam
输出样例:
hel mar
may
115
13
思路是:
需要注意的是:
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <string>
#include <map>
#include <queue>
#include <stack>
#include <algorithm>
using namespace std;
string dictionariesLow[13]=
{
"tret",
"jan",
"feb",
"mar",
"apr",
"may",
"jun",
"jly",
"aug",
"sep",
"oct",
"nov",
"dec"
};
string dictionariesHigh[13]=
{
"NULL",
"tam",
"hel",
"maa",
"huh",
"tou",
"kes",
"hei",
"elo",
"syy",
"lok",
"mer",
"jou"
};
int toTen(int high,int low);
int* toThirteen(int x);
int translateToEarth(const string& s);
string translateToMars(int x);
void translate(char** p,int n);
int main()
{
int n;
cin>>n;
char** p=new char*[n];
for(int i=0; i<n; i++)
p[i]=new char[10];
getchar();
for(int i=0; i<n; i++)
{
scanf("%[^\n]",p[i]);
getchar();
}
translate(p,n);
delete p;
return 0;
}
int* toThirteen(int x)
{
int *p=new int[2];
p[0]=x%13;
p[1]=x/13;
return p;
}
int toTen(int high,int low)
{
return high*13+low;
}
string translateToMars(int x)
{
int* p=toThirteen(x);
if(p[1]!=0)
{
if(p[0]!=0)
return dictionariesHigh[p[1]]+" "+dictionariesLow[p[0]];
else
return dictionariesHigh[p[1]];
}
else
return dictionariesLow[p[0]];
delete p;
}
int translateToEarth(const string& s)
{
int high=0,low=0;
if(s.find(‘ ‘)!=string::npos)
{
for(int i=1; i<13; i++)
{
if(s.substr(0,s.find(‘ ‘))==dictionariesHigh[i])
{
high=i;
break;
}
}
for(int i=0; i<13; i++)
{
if(s.substr(s.find(‘ ‘)+1)==dictionariesLow[i])
{
low=i;
break;
}
}
}
else
{
bool isOnlyLow=true;
for(int i=1; i<13; i++)
{
if(s==dictionariesHigh[i])
{
isOnlyLow=false;
high=i;
break;
}
}
if(isOnlyLow)
{
for(int i=1; i<13; i++)
{
if(s==dictionariesLow[i])
{
low=i;
break;
}
}
}
}
return toTen(high,low);
}
void translate(char** p,int n)
{
int x=0;
for(int i=0; i<n-1; i++)
{
x=0;
if(p[i][0]>=‘0‘&&p[i][0]<=‘9‘)
{
for(int j=0; j<strlen(p[i]); j++)
x=x*10+(p[i][j]-‘0‘);
cout<<translateToMars(x)<<endl;
}
else
cout<<translateToEarth(string(p[i]))<<endl;
}
x=0;
if(p[n-1][0]>=‘0‘&&p[n-1][0]<=‘9‘)
{
for(int j=0; j<strlen(p[n-1]); j++)
x=x*10+(p[n-1][j]-‘0‘);
cout<<translateToMars(x);
}
else
cout<<translateToEarth(string(p[n-1]));
}
标签:img 思路 char* AC stdio.h 乙级 com cin new
原文地址:https://www.cnblogs.com/FDProcess/p/9241321.html