浙大 pat Basic Level 1014
2014-02-28 14:25
267 查看
1014. 福尔摩斯的约会 (20)
大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm”。大侦探很快就明白了,字条上奇怪的乱码实际上就是约会的时间“星期四 14:04”,因为前面两字符串中第1对相同的大写英文字母(大小写有区分)是第4个字母'D',代表星期四;第2对相同的字符是'E',那是第5个英文字母,代表一天里的第14个钟头(于是一天的0点到23点由数字0到9、以及大写字母A到N表示);后面两字符串第1对相同的英文字母's'出现在第4个位置(从0开始计数)上,代表第4分钟。现给定两对字符串,请帮助福尔摩斯解码得到约会的时间。输入格式:
输入在4行中分别给出4个非空、不包含空格、且长度不超过60的字符串。
输出格式:
在一行中输出约会的时间,格式为“DAY HH:MM”,其中“DAY”是某星期的3字符缩写,即MON表示星期一,TUE表示星期二,WED表示星期三,THU表示星期四,FRI表示星期五,SAT表示星期六,SUN表示星期日。题目输入保证每个测试存在唯一解。
输入样例:
3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm
输出样例:
THU 14:04
//ASC码:(A~Z 65~90)、(N 78)、(a~z 97~122)、(0~9 48~57) #include <iostream> #include <vector> #include <iomanip> //控制输出格式 using namespace std; int main() { vector<char> str1,str2,str3,str4; for(int i = 0; i != 4; i++) { char temp = getchar(); while ('\n' != temp) { switch(i+'1') { case'1': str1.push_back(temp); break; case'2': str2.push_back(temp); break; case'3': str3.push_back(temp); break; case'4': str4.push_back(temp); break; default: cout << "error" << endl; } temp = getchar(); } } //测试读入的数据是否正确 //for(int i = 0;i != 60; i++) //{ // if(i < str1.size()) // cout << str1[i]; //} //cout << endl; //for(int i = 0;i != 60; i++) //{ // if(i < str2.size()) // cout << str2[i]; //} //cout << endl; //for(int i = 0;i != 60; i++) //{ // if(i < str3.size()) // cout << str3[i]; //} //cout << endl; //for(int i = 0;i != 60; i++) //{ // if(i < str4.size()) // cout << str4[i]; //} //cout << endl; //system("pause"); //return 0; char week,hour; int minute; bool flag = true; for(vector<int>::size_type i = 0; i != str1.size(); i++) { if(str2.size() > i) { if(flag) { if((65 <= str1[i])&&(71 >= str1[i])) { if (str1[i] == str2[i]) { week = str1[i]; flag = false; } } } else { if(((65 <= str1[i])&&(78 >= str1[i]))||((48 <= str1[i])&&(57 >= str1[i]))) { if (str1[i] == str2[i]) { hour = str1[i]; break; } } } } } for(vector<int>::size_type i = 0; i != str3.size(); i++) { if(str4.size() > i) { if(((65 <= str3[i])&&(90 >= str3[i]))||((97 <= str3[i])&&(122 >= str3[i]))) { if(str3[i] == str4[i]) { minute = i; break; } } } } switch(week) { case'A': cout << "MON "; break; case'B': cout << "TUE "; break; case'C': cout << "WED "; break; case'D': cout << "THU "; break; case'E': cout << "FRI "; break; case'F': cout << "SAT "; break; case'G': cout << "SUN "; break; default: cout << "ERROR "; break; } int hourtransformat; if ((48 <= hour)&&(57 >= hour)) { hourtransformat = hour - '0'; } if ((65 <= hour)&&(78 >= hour)) { hourtransformat = hour - 'A' + 10; } cout << setfill('0') << setw(2) << hourtransformat << ':'; cout << setfill('0') << setw(2) << minute << endl; system("pause"); return 0; }
相关文章推荐
- 【C++】浙大PAT (Basic Level)1014. 福尔摩斯的约会 (20)
- PAT (Basic Level) Practise:1014. 福尔摩斯的约会
- 【C++】浙大PAT (Basic Level)1011. A+B和C (15)
- 【C++】浙大PAT (Basic Level)1019. 数字黑洞 (20)
- PAT(basic level) 1014 福尔摩斯的约会(20)
- 浙大 pat Basic Level 1002
- 浙大 pat Basic Level 1012
- 【C++】浙大PAT (Basic Level)1004. 成绩排名 (20)
- 【C++】浙大PAT (Basic Level)1006. 换个格式输出整数 (15)
- 浙大 pat Basic Level 1003
- 浙大 pat Basic Level 1013
- PAT (Basic Level) Practise (中文)1014. 福尔摩斯的约会 (20)
- 【C++】浙大PAT (Basic Level)1007. 素数对猜想 (20)
- 【C++】浙大PAT (Basic Level)1016. 部分A+B (15)
- 【C++】浙大PAT (Basic Level)1017. A除以B (20)
- 浙大 pat Basic Level 1004
- 浙大 pat Basic Level 1015
- 【C++】浙大PAT (Basic Level)1020. 月饼 (25)
- 浙大 pat Basic Level 1005
- 浙大 pat Basic Level 1021