PAT乙级 1044.火星数字

#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstdio>
#include<string>
#include<map>
using namespace std;
int main()
{
    map<int,string> p1;
    p1[0]="tret",p1[1]="jan",p1[2]="feb",p1[3]="mar";
    p1[4]="apr",p1[5]="may",p1[6]="jun",p1[7]="jly";
    p1[8]="aug",p1[9]="sep",p1[10]="oct",p1[11]="nov";
    p1[12]="dec";
    map<int,string> p2;
    p2[0]="tret",p2[1]="tam",p2[2]="hel",p2[3]="maa";
    p2[4]="huh",p2[5]="tou",p2[6]="kes",p2[7]="hei";
    p2[8]="elo",p2[9]="syy",p2[10]="lok",p2[11]="mer";
    p2[12]="jou";
    map<string,int> p3;
    p3["tret"]=0,p3["jan"]=1,p3["feb"]=2,p3["mar"]=3;
    p3["apr"]=4,p3["may"]=5,p3["jun"]=6,p3["jly"]=7;
    p3["aug"]=8,p3["sep"]=9,p3["oct"]=10,p3["nov"]=11;
    p3["dec"]=12;
    map<string,int> p4;
    p4["tret"]=0,p4["tam"]=1,p4["hel"]=2,p4["maa"]=3;
    p4["huh"]=4,p4["tou"]=5,p4["kes"]=6,p4["hei"]=7;
    p4["elo"]=8,p4["syy"]=9,p4["lok"]=10,p4["mer"]=11;
    p4["jou"]=12;
    int n;
    cin>>n;
    getchar();
    while(n--)
    {
        string s1;
        getline(cin,s1);
        if(s1[0]>='0'&&s1[0]<='9')
        {
            int sum=0;
            for(int i=0;i<s1.length();i++)
                sum=sum*10+s1[i]-'0';
            if(sum<=12)
                cout<<p1[sum];
            else
            {
                int a=sum%13;
                int b=sum/13;
                if(a!=0)
                    cout<<p2[b]<<" "<<p1[a];
                else
                    cout<<p2[b];
            }
        }
        else
        {
            string s2,s3;
            int j=0;
            for(int i=0;i<s1.size();i++)
            {
                if(s1[i]==' ')
                {
                    j=i;
                    break;
                }
            }
            if(j!=0)
            {
                s2.assign(s1,0,j);
                s3.assign(s1,j+1,s1.size()-j);
                cout<<p4[s2]*13+p3[s3];
            }
            else
            {
                bool got=false;
                for(int i=0;i<=12;i++)
                {
                    if(s1==p1[i])
                    {
                        got=true;
                        cout<<i;
                        break;
                    }
                }
                if(!got)
                {
                    for(int i=1;i<=12;i++)
                    {
                        if(s1==p2[i])
                        {
                            cout<<13*i;
                            break;
                        }
                    }
                }
            }
        }
        if(n!=0)
            cout<<endl;
    }
    return 0;
}

发布了45 篇原创文章 · 获赞 1 · 访问量 6789

猜你喜欢

转载自blog.csdn.net/Ls_attack/article/details/79797819