1014ホームズのデート(20分)C++推奨テスト用例+サンプルコード+考え方
1014ホームズのデート(20分)
大探偵ホームズは奇妙なメモを受け取った:私たちはデートしましょう!
≪フォーマットの入力|Input Format|oem_src≫:4行に4つの空白ではなく、スペースを含まず、長さが60を超えない文字列を入力します.
出力フォーマット:一行の中でデートの時間を出力して、フォーマットはDAY HH:MMで、その中のDAYはある週の3文字の略語で、つまりMONは月曜日を表して、TUEは火曜日を表して、WEDは水曜日を表して、THUは木曜日を表して、FRIは金曜日を表して、SATは土曜日を表して、SUNは星期日を表します.問題入力は、各テストに一意の解があることを保証します.
入力サンプル:3485 djDkxh 4 hhGE 2984 akDfkkkggEdsb s&hgsfdkd&Hyscvnm
出力サンプル:THU 14:04
注意点:
多くの条件はすべて詳しく出していないで、少し穴があいて、する時に意味を理解し間違えたことを招きます
方法及び注意点:①検索週:位置は等しく、二組の文字列は一対一に対応して検索し、範囲A-Gは同じである.
②検索時間:位置が等しい場合、2組の文字列は1回目の等しい下付き文字から始まり、範囲0から9、AからNまで、同じであれば見つける
③検索分:位置が等しく、2組の文字列で検出されたアルファベットの
デートの時間を出力して、フォーマットはDAY HHです:MMは0を補うことを覚えています
推奨テストデータ:
サンプルコード1:
大探偵ホームズは奇妙なメモを受け取った:私たちはデートしましょう!
3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm
.大探偵はすぐに分かった.メモの奇妙な文字化けしは実際にデートの時間である木曜日14:04で、前の2つの文字列の1対目の同じ大文字の英語のアルファベット(大文字と小文字が区別されている)は4番目のアルファベットDで、木曜日を代表しているからだ.2番目の同じ文字はEで、それは5番目の英語のアルファベットで、1日の14時間目を表しています(1日の0時から23時まで数字の0から9、および大文字のAからNで表されています).後の2つの文字列の1対目の同じ英字sは、4番目の位置(0からカウント)に現れ、4分目を表す.2対の文字列が与えられ、ホームズがデートの時間を復号するのを助けてください.≪フォーマットの入力|Input Format|oem_src≫:4行に4つの空白ではなく、スペースを含まず、長さが60を超えない文字列を入力します.
出力フォーマット:一行の中でデートの時間を出力して、フォーマットはDAY HH:MMで、その中のDAYはある週の3文字の略語で、つまりMONは月曜日を表して、TUEは火曜日を表して、WEDは水曜日を表して、THUは木曜日を表して、FRIは金曜日を表して、SATは土曜日を表して、SUNは星期日を表します.問題入力は、各テストに一意の解があることを保証します.
入力サンプル:3485 djDkxh 4 hhGE 2984 akDfkkkggEdsb s&hgsfdkd&Hyscvnm
出力サンプル:THU 14:04
注意点:
多くの条件はすべて詳しく出していないで、少し穴があいて、する時に意味を理解し間違えたことを招きます
方法及び注意点:①検索週:位置は等しく、二組の文字列は一対一に対応して検索し、範囲A-Gは同じである.
②検索時間:位置が等しい場合、2組の文字列は1回目の等しい下付き文字から始まり、範囲0から9、AからNまで、同じであれば見つける
③検索分:位置が等しく、2組の文字列で検出されたアルファベットの
デートの時間を出力して、フォーマットはDAY HHです:MMは0を補うことを覚えています
推奨テストデータ:
1:
3485djEkxh4hhGE
2984akEfkkkkggEdsb
s&hgsfdk
d&Hyscvnm
:
FRI 14:04
2:
3485djGkxh4hhG2
2984akGfkkkkgg2dsb
s&hgsfdk
d&hyscvnm
:
SUN 02:02
サンプルコード1:
#include
using namespace std;
#define range(num,x,y)(num>=x&&num<=y)
string week[8]={
"MON","TUE","WED","THU","FRI","SAT","SUN"};
int main(){
string str[4];
for(int i=0;i<4;i++)
cin>>str[i];
int len=min(str[0].size(),str[1].size());
int len2=min(str[2].size(),str[3].size());
int cnt=0;
for(int i=0;i<len;i++){
if(cnt==0&&str[0][i]==str[1][i]&&range(str[0][i],'A','G')){
cout<<week[str[0][i]-'A']<<" ";
cnt++;
continue;
}
if(cnt==1&&str[0][i]==str[1][i]){
if(range(str[0][i],'A','N')){
cout<<(10+str[0][i]-'A')<<":";
cnt++;
}else if(range(str[0][i],'0','9')){
printf("%02d:",str[0][i]-'0');
cnt++;
}
}
}
for(int i=0;i<len2;i++){
if(str[2][i]==str[3][i]&&range(str[2][i],'a','z')||range(str[2][i],'A','Z')){
printf("%02d",i);
break;
}
}
return 0;
}