PAT 甲级 A1100 (2019/02/22)
Posted zjsaipplp
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAT 甲级 A1100 (2019/02/22)相关的知识,希望对你有一定的参考价值。
1 #include<cstdio> 2 #include<iostream> 3 #include<string> 4 #include<map> 5 using namespace std; 6 // [0,12]的火星文 7 string unitDigit[13] = { 8 "tret", "jan", "feb", "mar", "apr", "may", "jun", "jly", "aug", "sep", "oct", "nov", "dec" 9 }; 10 // 13的[0,12]倍的火星文 11 string tenDigit[13] = { 12 "tret", "tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo", "syy", "lok", "mer", "jou" 13 }; 14 string numToStr[170]; // 数字->火星文 15 map<string, int> strToNum; // 火星文->数字 16 void init() { 17 for(int i = 0; i < 13; i++) { 18 numToStr[i] = unitDigit[i]; // 个位为[0,12],十位为0 19 strToNum[unitDigit[i]] = i; 20 numToStr[i * 13] = tenDigit[i]; // 十位为[0,12],个位为0 21 strToNum[tenDigit[i]] = i * 13; 22 } 23 for(int i = 1; i < 13; i++) { // 十位 24 for(int j = 1; j < 13; j++) { // 个位 25 string str = tenDigit[i] + " " + unitDigit[j]; // 火星文 26 numToStr[i * 13 + j] = str; // 数字->火星文 27 strToNum[str] = i * 13 + j; // 火星文->数字 28 } 29 } 30 } 31 int main() { 32 init(); // 打表 33 int T; 34 scanf("%d%*c", &T); // 查询个数 35 while(T--) { 36 string str; 37 getline(cin, str); // 查询的数 38 if(str[0] >= ‘0‘ && str[0] <= ‘9‘) { // 如果是数字 39 int num = 0; // 字符串转换成数字 40 for(int i = 0; i < str.length(); i++) { 41 num = num * 10 + (str[i] - ‘0‘); 42 } 43 cout << numToStr[num] << endl; // 直接查表 44 } else { // 如果是火星文 45 cout << strToNum[str] << endl; // 直接查表 46 } 47 } 48 return 0; 49 }
以上是关于PAT 甲级 A1100 (2019/02/22)的主要内容,如果未能解决你的问题,请参考以下文章