码迷,mamicode.com
首页 > 其他好文 > 详细

【PAT】B1044 火星数字(20 分)

时间:2018-08-18 18:39:47      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:data   may   slow   ace   else   void   i++   mes   %s   

/*
火星文有两位,第二位为0不输出

 
 */
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<ctype.h>

using namespace std;
char arr[20]={0};
char data[13][2][5]={
{"tret","tret"},
{"jan","tam"},
{"feb","hel"},
{"mar","maa"},
{"apr","huh"},
{"may","tou"},
{"jun","kes"},
{"jly","hei"},
{"aug","elo"},
{"sep","syy"},
{"oct","lok"},
{"nov","mer"},
{"dec","jou"}
};
void prr(char *str){
    if(str[3]==‘t‘&&str[0]==‘t‘&&str[1]==‘r‘&&str[2]==‘e‘){
        printf("0");return;
    }
    if(islower(str[0])){//输入为火星文
        int high=0,low=0;
        for(int i=0;i<13;i++){
            if(data[i][1][0]==str[0]&&data[i][1][1]==str[1]&&data[i][1][2]==str[2])//前边的字符只可能是高位
                high+=i*13;
            if(data[i][0][0]==str[0]&&data[i][0][1]==str[1]&&data[i][0][2]==str[2])//后边的字符不确定
                low+=i;
            if(data[i][0][0]==str[4]&&data[i][0][1]==str[5]&&data[i][0][2]==str[6]&&str[3]!=‘\0‘)
                low+=i;
        }
        printf("%d",low+high);
    }
    else{//输入为数字
        int temp;
        sscanf(str,"%d",&temp);
        if(temp<13){
            printf("%s",&data[temp][0]);
        }
        else{
            printf("%s",&data[temp/13][1]);
            if(temp%13!=0)
            printf(" %s",&data[temp%13][0]);
        }
    }
}
int main(){
    int N;scanf("%d",&N);
    for(int i=0;i<N;i++){
        scanf(" %[^\n]",arr);
        if(i!=0) printf("\n");
        prr(arr);
    }
    return  0;
}

【PAT】B1044 火星数字(20 分)

标签:data   may   slow   ace   else   void   i++   mes   %s   

原文地址:https://www.cnblogs.com/hebust/p/9498019.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!