2014名校複試機考模擬題 21375:小明的約會

題目鏈接:http://zju.acmclub.com/index.php?app=problem_title&id=1&problem_id=21375

題目描述

小明和他的女朋友是兩朵奇葩,總是願意把簡單問題搞得很複雜,這不小明剛接到女朋友發來的一條微信:“我們約會吧!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


Hint:本題格式要求比較多,需要仔細處理每一個細節。

代碼如下:

#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
#include<set>
#include<map>
#include<iomanip>
using namespace std;
bool isodd(int n)
{
    if (n % 2 != 0)
        return true;
    return false;
}
int main()
{
#ifdef ONLINE_JUDGE
#else
    freopen("D:\\in.txt", "r", stdin);
    freopen("D:\\out.txt", "w", stdout);
#endif
    string s1,s2,s3,s4;
    map<char, string> m;
    map<char, int> m2;
    vector<string> coll;
    coll.push_back("MON");
    coll.push_back("TUE");
    coll.push_back("WED");
    coll.push_back("THU");
    coll.push_back("FRI");
    coll.push_back("SAT");
    coll.push_back("SUN");
    for (int i = 0; i < 7; i++)
    {
        m[i + 'A'] = coll[i];
        m[i + 'a'] = coll[i];
    }
    for (int i = 0; i < 14; i++)
    {
        m2[i + 'A'] = 10 + i;
        m2[i + 'a'] = 10 + i;
    }
        
    while (cin >> s1 >> s2 >> s3 >> s4)
    {
        int len1 = min(s1.size(), s2.size());
        int len2 = min(s3.size(), s4.size());
        int cnt = 0;
        for (int i = 0; i < len1; i++)
        {
            if (('A' <= s1[i] && s1[i] <= 'G') && (s1[i] == s2[i]) && cnt == 0)
            {
                string tmp = m[s1[i]];
                cout << tmp;
                cnt++;
            }
            else if (cnt == 1 && s1[i] == s2[i] && ((s1[i]>='0'&&s1[i]<='9')||('A' <= s1[i] && s1[i] <= 'N')))
            {
                if ('0' <= s1[i]&&s1[i] <= '9')
                    cout <<" "<<setfill('0')<<setw(2)<< s1[i];
                else
                    cout <<" "<< m2[s1[i]];
                break;
            }
        }
        for (int i = 0; i < len2; i++)
        {
            if (s3[i] == s4[i] && (('A' <= s3[i] && s3[i] <= 'Z') || ('a' <= s3[i] && s3[i] <= 'z')))
            {
                cout << ":";
                cout << setfill('0') << setw(2);
                cout <<i << endl;
                break;
            }
        }
    }
    
    return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章