PAT乙1014. 福爾摩斯的約會 (20)
阿新 • • 發佈:2019-01-12
題目在這裡
1014. 福爾摩斯的約會 (20)
時間限制 100 ms記憶體限制 65536 kB
程式碼長度限制 8000 B
判題程式 Standard 作者 CHEN, Yue
大偵探福爾摩斯接到一張奇怪的字條:“我們約會吧! 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
#include<cstdio> #include<cstring> int main(){ char a1[65],a2[65],b1[65],b2[65]; char week[7][10]={"MON","TUE","WED","THU","FRI","SAT","SUN"},day[10]; int HH,i,MM,j; gets(a1); //not correct when using scanf gets(a2); gets(b1); gets(b2); int len1=strlen(a1); int len2=strlen(a2); int len3=strlen(b1); int len4=strlen(b2); for(i=0;i<len1&&i<len2;i++){ if((a1[i]==a2[i])&&(a1[i]>='A'&&a1[i]<='G')){ strcpy(day,week[a1[i]-'A']); break; } } for(j=i+1;j<len1&&j<len2;j++){ if(a1[j]==a2[j]){ if(a1[j]>='0'&&a1[j]<='9'){ HH=a1[j]-'0'; break; //do not forget the break(the first meet) }else if(a1[j]>='A'&&a1[j]<='N'){ HH=a1[j]-'A'+10; break; } } } for(i=0;i<len3&&i<len4;i++){ if((b1[i]==b2[i])&&((b1[i]>='a'&&b1[i]<='z')||(b1[i]>='A'&&b1[i]<='Z'))){ break; } } MM=i; printf("%s %02d:%02d",day,HH,MM); return 0; }