[PAT]1100. Mars Numbers (20)

 #include <iostream>
#include <vector>
#include <string>
#include <stdlib.h>
#include <math.h>
#include <sstream>
#include <map>
#include <set>
#include <algorithm>
using namespace std;
  


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 findidx(string str,string* vec, string* vec2)
{
for(int i=0;i<13;i++)
{
if(str == vec[i])
return i;
if(str == vec2[i])
return i*13;
}

return -1;
}


string e2m(int a)
{
if(a==0)
return "tret";


int divider = a;
int mod;
string str ="";


int k =0;
while(divider !=0)
{
mod = divider%13;
divider /=13;
if(k==0)
{
 
str = low[mod]+str;
k++;
}
else if(k==1)
{


if(str=="tret")
str = high[mod];
else 
str = high[mod]+" "+str;
 
}


}


return str;




}


int main(void)
{
 


int N;

scanf("%d",&N);
  
cin.ignore();


 
while(N--)
{
string str;
 

getline(cin,str);


if(str[0]>='0' && str[0]<='9')
{
 stringstream ss;
ss<<str;
int e_num;
ss>>e_num;


string res =  e2m(e_num);
cout<<res<<endl;
 
}
else
{
 int sum =0;
 int l=0;
 int r=0;


for(int k=0;k<str.length();k++)
{

if(str[k]==' ')
{
r=k;
 
sum += findidx(str.substr(l,r-l),low,high);


l=k+1;
}
}
 
sum += findidx(str.substr(l,str.length()-l),low,high);
 


cout<<sum<<endl;
}


}


 


return 0;
}
 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值