zoukankan      html  css  js  c++  java
  • PAT 乙级 1014 福尔摩斯的约会 (20) C++版

    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表示,超过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


    这一题虽然难度系数0.16,但是难的原因应该是表意不明导致的,真正的题目意思我已添加进去并用红色注释,真的太坑说实话

    当看到这一题AC出来,眼泪都出来了


     1 // 1014.cpp : 定义控制台应用程序的入口点。
     2 //
     3 
     4 #include "stdafx.h"
     5 #include<iostream>
     6 #include<string>
     7 #include<cctype>
     8 #include<typeinfo>
     9 #include<iomanip>
    10 
    11 using namespace std;
    12 
    13 int main()
    14 {
    15     int i, num = 0,temp;//num表示字符串匹配几个数字
    16     string day[7] = {"MON","TUE","WED","THU","FRI","SAT","SUN"},secret[4];
    17 
    18     for (i = 0; i < 4; i++)
    19         getline(cin, secret[i]);
    20 
    21     //处理前两个字符串
    22     for (i = 0; num != 2; i++)
    23     {
    24         if (num == 0)//得到周几
    25         {
    26             if (isupper(secret[0][i]) && secret[0][i] == secret[1][i] && secret[0][i] <= 'G'&&secret[0][i] >= 'A')
    27             {
    28                     cout << day[(static_cast<int>(secret[0][i] - 65)) % 7] << " ";//注意越界情况
    29                     num++;
    30             }
    31         }
    32         else//得到小时
    33         {
    34             if (isupper(secret[0][i]) && secret[0][i] == secret[1][i] && secret[0][i] >= 'A' && secret[0][i] <= 'N')//大于九点的情况
    35             {
    36                     cout << setw(2) << setfill('0') << static_cast<int>(secret[0][i] - 55) << ":";
    37                     num++;
    38             }
    39             else if (isdigit(secret[0][i])&& secret[0][i]==secret[1][i])//小于等于九点
    40             {
    41                 cout << setw(2) << setfill('0') << static_cast<int>(secret[0][i] - 48) << ":";
    42                 num++;
    43             }
    44         }
    45     }
    46 
    47     //得到分钟
    48     for (i = 0; 1; i++)
    49     {
    50         if (isalpha(secret[2][i]) && secret[2][i]== secret[3][i])
    51         {
    52             cout << setw(2) << setfill('0') << i << endl;
    53             break;
    54         }
    55 
    56     }
    57 
    58     return 0;
    59 }


  • 相关阅读:
    hdu 4027 Can you answer these queries? 线段树
    ZOJ1610 Count the Colors 线段树
    poj 2528 Mayor's posters 离散化 线段树
    hdu 1599 find the mincost route floyd求最小环
    POJ 2686 Traveling by Stagecoach 状压DP
    POJ 1990 MooFest 树状数组
    POJ 2955 Brackets 区间DP
    lightoj 1422 Halloween Costumes 区间DP
    模板 有源汇上下界最小流 loj117
    模板 有源汇上下界最大流 loj116
  • 原文地址:https://www.cnblogs.com/cdp1591652208/p/7192504.html
Copyright © 2011-2022 走看看