截止到19/10/28,该题在PTA乙级题库中通过率最低,仅为0.16
并不是这道题很难,而是很恶心,有很多坑,需要仔细地读题
“前面两字符串中第 1 对相同的大写英文字母(大小写有区分)是第 4 个字母 D
,代表星期四”,这句话隐含的条件是:第一个匹配的是一对大写字母,又因为一周只有7天,所以只能是字母A到字母G
“第 2 对相同的字符是 E
,那是第 5 个英文字母,代表一天里的第 14 个钟头(于是一天的 0 点到 23 点由数字 0 到 9、以及大写字母 A
到 N
表示)”,注意0到9存储的是char类型,if里范围要写成(a[i]>='0'&&a[i]<='9'),千万不要把单引号忘记了
#include<bits/stdc++.h>
using namespace std;
int main(){
string a,b,c,d;
cin>>a>>b>>c>>d;
char z[2];
int i=0;
while(i<=a.length()-1&&i<=b.length()-1){
if((a[i]==b[i])&&(a[i]>='A'&&a[i]<='G')){
z[0]=a[i];
break;
}
i++;
}
i++;
while(i<=a.length()-1&&i<=b.length()-1){
if((a[i]==b[i])&&((a[i]>='0'&&a[i]<='9')||(a[i]>='A'&&a[i]<='N'))){
z[1]=a[i];
break;
}
i++;
}
int j=0,index;
while(j<=c.length()-1&&j<=d.length()-1){
if(c[j]==d[j]&&isalpha(c[j])){
index = j;
break;
}
j++;
}
string week[7]={"MON","TUE","WED","THU","FRI","SAT","SUN"};
cout<<week[z[0]-'A'];
cout<<" ";
int weizhi=0;
if(z[1]!=NULL)
weizhi = isdigit(z[1])?z[1]-'0':z[1]-'A'+10;
printf("%02d:%02d",weizhi,index);
}