标签:
大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧! 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
提醒:不是所有的大写字母都符合
1 #include<iostream> 2 #include<string.h> 3 #include<cstdio> 4 #include<algorithm> 5 using namespace std; 6 int main() 7 { 8 char s[4][61]; 9 string day[]= {"MON","TUE","WED","THU","FRI","SAT","SUN"}; 10 int i=0,j=0; 11 bool first=true; 12 for(i=0; i<4; i++) 13 cin>>s[i]; 14 for(i=0; s[0][i]&&s[1][i]; i++) 15 { 16 if(first && s[0][i]>=‘A‘ &&s[0][i]<=‘G‘&& s[0][i]==s[1][i]) //这里不要用isupper()! 17 { 18 cout<<day[s[0][i]-‘A‘]<<" "; 19 first=false; 20 continue; 21 } 22 23 if(!first && s[0][i]==s[1][i] && ( s[0][i]>=‘A‘ &&s[0][i]<=‘N‘ || isdigit(s[0][i])) )//这里不要用isupper()! 24 { 25 if(isupper(s[0][i])) 26 cout<<s[0][i]-‘A‘+10<<":"; 27 if(isdigit(s[0][i])) 28 cout<<"0"<<s[0][i]-‘0‘<<":"; 29 break; 30 } 31 } 32 33 for(i=0; s[2][i] && s[3][i]; i++) 34 { 35 if( isalpha(s[2][i])&& s[2][i]==s[3][i]) 36 { 37 cout<<i/10<<i%10<<endl; 38 break; 39 } 40 } 41 42 return 0; 43 }
标签:
原文地址:http://www.cnblogs.com/zhien-aa/p/5660341.html