PAT 乙级 -- 1014 -- 福尔摩斯的约会
2024-10-18 09:07:15
题目简介
大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧! 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;
}
最新文章
- c++ 11 sleep()
- launch文件
- cocos2dx 帧动画的两种创建方式
- FTP命令详解
- python中使用list作为默认参数且调用时不给其赋值的问题
- 无法修改系统Host的解决办法
- struts的ognl.NoConversionPossible错误
- ios 相机调用之读取相册
- windows安装weblogic和域的建立
- vuejs2.0与1.x版本中怎样使用js实时访问input的值的变化
- 【NOIP2018 Day1】题解
- python基础教程(第二版)
- Expected one result (or null) to be returned by selectOne(), but found: 3
- Controller:EOS区块链核心控制器
- 关于<;T>; T[] toArray(T[] a) 方法
- ntpd修改版本号教程
- Vue.js 2.0生命周期
- 使用STM32CubeMX生成RTC工程[秒中断]
- CentOS安装SVN客户端(rpm)
- HDU 4004 The Frog&#39;s Games(二分答案)
热门文章
- PAT-1043(Is It a Binary Search Tree)JAVA实现
- Bullet碰撞检测
- NIO三大组件之Buffer
- key解析
- 在go中通过cmd调用python命令行参数量级过大问题解决
- jQuery学习笔记(1) 初识jQuery
- Android Studio 中的 button 无法使用 background 更改背景颜色
- springboot+druid报错log4j:WARN No appenders could be found for logger (druid.sql.Connection). log4j:WARN Please initialize the log4j system properly.
- Python - 关于类(self/cls) 以及 多进程通讯的思考
- Ansible 教程