1. 程式人生 > >PAT乙1014. 福爾摩斯的約會 (20)

PAT乙1014. 福爾摩斯的約會 (20)

題目在這裡

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;
}