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
题目分析:将4个字符串获取存放到数组中,用数组进行比较;要注意几点条件;要仔细分析:1、要大写字母,还必须是A到G之间(通过1~7推导出来)2、要是0~9或A~N通过(24小时推到出来)3、要是字母不分大小写
代码:
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int m,n; n=2; char a[2][100],b[2][100]; int i,j; j=0; for(m=0;m<n;m++) { scanf("%s",&a[m]); scanf("%s",&b[m]); } for(m=0;m<n;m++) { for(i=0;a[m][i]!='\0'&&b[m][i]!='\0';i++) { if(a[m][i]==b[m][i]) { if(j==0) { if(a[m][i]<'A'||a[m][i]>'G')//第一个字符要求是大写字母,而且必须是A到G否则会超过7 { j--; } else { a[m][i]=a[m][i]-64; switch(a[m][i]) { case 1:printf("MON "); break; case 2:printf("TUE "); break; case 3:printf("WED "); break; case 4:printf("THU "); break; case 5:printf("FRI "); break; case 6:printf("SAT "); break; case 7:printf("SUN "); break; } } } if(j==1) { if(a[m][i]<'0'||(a[m][i]>'9'&&a[m][i]<'A')||a[m][i]>'N')//是数字或大写字母,而且字母小于等于N { j--; } else { if(a[m][i]<='9') printf("0%d:",a[m][i]-'0'); if(a[m][i]>='A'&&a[m][i]<='N') printf("%d:",a[m][i]-'A'+10); } } if(j==2) { if((a[m][i]>='A'&&a[m][i]<='Z')||(a[m][i]>='a'&&a[m][i]<='z'))//是字母部分大小写 { if(i<10) printf("0%d",i); else printf("%d",i); } else { j--; } } j++; } if(j>2) break; } } return 0; }