PAT 乙级 -- 1014 -- 福尔摩斯的约会
题目简介
大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧! 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
思路
此题主要挖坑在取值范围上,星期取值必须大写且范围A-G,分钟取值需大写且依题意范围应在0-N之间,秒数只需字符相等即可。
C++代码样例
#include <cstdio>
#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std;
const char *const week_array[] = {"MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"};
const char hournum[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N'};
int main(void)
{
    unsigned int i = 0, k = 0;
    int count = 0;
    char *str1 = (char *)malloc(sizeof(char) * 65);
    char *str2 = (char *)malloc(sizeof(char) * 65);
    char *str3 = (char *)malloc(sizeof(char) * 65);
    char *str4 = (char *)malloc(sizeof(char) * 65);
    memset(str1, 0, sizeof(str1) * 65);
    memset(str2, 0, sizeof(str2) * 65);
    memset(str3, 0, sizeof(str3) * 65);
    memset(str4, 0, sizeof(str4) * 65);
    gets(str1);
    gets(str2);
    gets(str3);
    gets(str4);
    for(i = 0; i < strlen(str1) && i < strlen(str2); i++)
    {
        if(str1[i] == str2[i] && count >= 0 && count < 2)
        {
            if(str1[i] <= 'G' && str1[i] >= 'A' && count == 0)
            {
                printf("%s ", week_array[str1[i] - 'A']);
                count++;
                continue;
            }
            else if(count == 1)
            {
                if((str1[i] <= '9' && str1[i] >= '0') || (str1[i] >= 'A' && str1[i] <= 'N'))
                {
                    for(k = 0; k < 24; k++)
                    {
                        if(hournum[k] == str1[i])
                        {
                            printf("%02d", k);
                            count++;
                            break;
                        }
                    }
                }
            }
        }
        if(count == 2)
        {
            break;
        }
    }
    for(i = 0; i < strlen(str3) && i < strlen(str4); i++)
    {
        if(str3[i] == str4[i])
        {
            if((str3[i] <= 'z' && str3[i] >= 'a') || (str3[i] <= 'Z' && str3[i] >= 'A'))
            {
                printf(":%02d", i);
                return 0;
            }
        }
    }
    return 0;
}
PAT 乙级 -- 1014 -- 福尔摩斯的约会的更多相关文章
- PAT乙级   1014. 福尔摩斯的约会 (20)
		1014. 福尔摩斯的约会 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 大侦探福尔摩斯接到一张奇怪的 ... 
- PAT 乙级 1014 福尔摩斯的约会 (20) C++版
		1014. 福尔摩斯的约会 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 大侦探福尔摩斯接到一张奇怪的 ... 
- 【PAT】1014. 福尔摩斯的约会 (20)
		1014. 福尔摩斯的约会 (20) 大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hy ... 
- PAT(B) 1014 福尔摩斯的约会(Java)
		题目链接:1014 福尔摩斯的约会 注意 三个字眼:"第1对","第2对","第1对",因此如果你用了循环,别忘了break,因为后面也可能 ... 
- PAT Basic 1014  福尔摩斯的约会 (20 分)
		大侦探福尔摩斯接到一张奇怪的字条:我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm.大侦探很快就明白了,字条上奇 ... 
- PAT Basic 1014 福尔摩斯的约会 (20 分) Advanced 1061 Dating (20 分)
		大侦探福尔摩斯接到一张奇怪的字条:我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm.大侦探很快就明白了,字条上奇 ... 
- PAT乙级:1014 福尔摩斯的约会 (20分)
		PAT乙级:1014 福尔摩斯的约会 (20分) 题干 大侦探福尔摩斯接到一张奇怪的字条:我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk ... 
- 浙江大学PAT上机题解析之1014. 福尔摩斯的约会 (20)
		1014. 福尔摩斯的约会 (20) 时间限制 50 ms 内存限制 32000 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Y ... 
- PAT 1014 福尔摩斯的约会 (20)(代码+思路)
		1014 福尔摩斯的约会 (20)(20 分) 大侦探福尔摩斯接到一张奇怪的字条:"我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfd ... 
随机推荐
- CentOS7 下 MySQL 5.7.23 & XtraBackup 24 做数据备份(1)——安装软件
			在两台机子上同时操作下面的步骤 首先安装MySQL,从官网下载相对应版本的RPM包 mysql-community-client-5.7.23-1.el7.x86_64.rpm mysql-commu ... 
- docker swarm模式跨主机连接
			一.前言 当我们开发好微服务之后,考虑到灵活快速持续部署的需要,通常会考虑将其Docker镜像化并在Docker环境下运行.由于微服务个数通常会较多,把所有微服务部署在一台docker主机上是不现实的 ... 
- 2.2 Python3基础-基本数据类型
			>>返回主目录 源代码 # 基本数据类型 # Number类型:如何查看变量的数据类型? name = 'Portos' print(type(name)) # 结果:str print( ... 
- git clone 提速
			将类似于 git clone https://github.com/graykode/nlp-tutorial 的命令改成 https://github.com.cnpmjs.org/graykode ... 
- phpMyAdmin Transformation 任意文件包含/远程代码执行漏洞
			漏洞参考 https://yq.aliyun.com/articles/679633 国外提供了一个在线测试的靶场 默认密码 root toor https://www.vsplate.c ... 
- FreeBSD 乃至开源界中的孔乙己 再论苦难哲学之一
			在许多狂热的FreeBSD 粉丝里,他们甚至不允许别人把FreeBSD写作freebsd,要和你强调,F和BSD都是大写的.还说这是什么尊重之类的东西.大抵和孔乙己的茴香豆的茴的有四种写法一样吧:&q ... 
- 【wp】2021V&NCTF
			前几天打完的V&NCTF公开赛,做题的时候没记过程,这是复现wp. 最后排名Top 18,三道RE+两道杂项(wp没啥可放的hhh)+一道web,感觉re题目还是挺好的,难度适中点赞,尤其pc ... 
- 2019_西湖论剑_预选赛 testre
			2019_西湖论剑_预选赛 testre 程序中关键操作是比较ptr,其中夹杂的一部分v26计算是为了混淆我们的分析.那么我们只要跟踪ptr数组的生成便可,向上发现v11,加密操作数组. 接下来跟踪v ... 
- java例题_09 1000以内的完全数
			1 /*9 [程序 9 求完数] 2 题目:一个数如果恰好等于它的所有因子之和,这个数就称为"完数". 3 例如 6=1+2+3.编程找出 1000 以内的所有完数. 4 */ 5 ... 
- 从 lite-apiserver 看 SuperEdge 边缘节点自治
			引言 在 SuperEdge 0.2.0版本中,lite-apiserver 进行了重大的架构升级和功能增强.本文将从 lite-apiserver 实现及其与其它 SuperEdge 组件协同的角度 ... 
