蓝桥杯:特殊时间(C++)
禁止转载,该文章内容并非教学,仅为个人笔记。
问题描述
2022 年 2 月 22 日 22:20 是一个很有意义的时间,
年份为 2022,由 3 个 2 和 1 个 0 组成,
如果将月和日写成 4 位,为 0222,也是由 3 个 2 和 1 个 0 组成,
如果将时间中的时和分写成 4 位,还是由 3 个 2 和 1 个 0 组成。
小蓝对这样的时间很感兴趣,他还找到了其它类似的例子,比如 111 年 10 月 11 日 01:11,2202 年 2 月 22 日 22:02 等等。
请问,总共有多少个时间是这种年份写成 4 位、月日写成 4 位、时间写成4 位后由 3 个一种数字和 1 个另一种数字组成。注意 1111 年 11 月 11 日11:11不算,因为它里面没有两种数字。
解题思路
数据中要特别注意的是日月组合,因为一个月有几天取决于月份。
看下图,在可能的最大组合值中,有且仅有日月组合为 11 月 31 日 是无效的,排除日月组合中所有日大于等于31即可。
2月的最大组合是 02 月 22 日,所以不用考虑闰年问题。
代码实现
#include<iostream>
using namespace std;
void IsOk(int&, int&, int&);
int Numbers[4], Count;
int main()
{for (int j = 0; j < 10; ++j){for (int k = 0; k < 10; ++k) // j,k 为种子数据,接下来生成的年月日时分都由种子数据组成{if(j == k) continue;int y = 0, m = 0, hs = 0; // y,m,hs 为由当前种子组成下可以分别满足条件的年,月日,时分总数for (int i = 0; i < 4; ++i){Numbers[i] = j;Numbers[(i + 1) % 4] = Numbers[(i + 2) % 4] = Numbers[(i + 3) % 4] = k;IsOk(y, m, hs);}cout << "count: " << y * m * hs << endl;Count += y * m * hs; // 组合}}cout << Count;return 0;
}void IsOk(int &y, int &m, int &hs)
{int year = Numbers[0] * 1000 + Numbers[1] * 100 + Numbers[2] * 10 + Numbers[3];int month = Numbers[0] * 10 + Numbers[1];int day = Numbers[2] * 10 + Numbers[3];int hour = month;int minute = day;if (year > 0){++y;cout << "Year:" << year << ",";}if (month > 0 && month < 13 && day > 0 && day < 31){++m;cout << "MonthDay:" << month << "-" << day << ",";}if (hour > 0 && hour < 25 && minute >= 0 && minute < 60){++hs;cout << "HourMinute:" << hour << ":" << minute;}cout << endl;
}
运行结果
共 212 种组合
0111-01-11 01:11
0111-01-11 10:11
0111-01-11 11:01
0111-01-11 11:10
0111-10-11 01:11
0111-10-11 10:11
…
Year:111,MonthDay:1-11,HourMinute:1:11
Year:1011,MonthDay:10-11,HourMinute:10:11
Year:1101,MonthDay:11-1,HourMinute:11:1
Year:1110,MonthDay:11-10,HourMinute:11:10
count: 64
Year:222,MonthDay:2-22,HourMinute:2:22
Year:2022,HourMinute:20:22
Year:2202,HourMinute:22:2
Year:2220,HourMinute:22:20
count: 16
...
Year:1222,MonthDay:12-22,HourMinute:12:22
Year:2122,HourMinute:21:22
Year:2212,HourMinute:22:12
Year:2221,HourMinute:22:21
count: 16
...
Year:2111,HourMinute:21:11
Year:1211,MonthDay:12-11,HourMinute:12:11
Year:1121,MonthDay:11-21,HourMinute:11:21
Year:1112,MonthDay:11-12,HourMinute:11:12
count: 48
...
Year:3111,
Year:1311,HourMinute:13:11
Year:1131,HourMinute:11:31
Year:1113,MonthDay:11-13,HourMinute:11:13
count: 12
...
Year:4111,
Year:1411,HourMinute:14:11
Year:1141,HourMinute:11:41
Year:1114,MonthDay:11-14,HourMinute:11:14
count: 12
...
Year:5111,
Year:1511,HourMinute:15:11
Year:1151,HourMinute:11:51
Year:1115,MonthDay:11-15,HourMinute:11:15
count: 12
...
Year:6111,
Year:1611,HourMinute:16:11
Year:1161,
Year:1116,MonthDay:11-16,HourMinute:11:16
count: 8
...
Year:7111,
Year:1711,HourMinute:17:11
Year:1171,
Year:1117,MonthDay:11-17,HourMinute:11:17
count: 8
...
Year:8111,
Year:1811,HourMinute:18:11
Year:1181,
Year:1118,MonthDay:11-18,HourMinute:11:18
count: 8
...
Year:9111,
Year:1911,HourMinute:19:11
Year:1191,
Year:1119,MonthDay:11-19,HourMinute:11:19
count: 8
...
212
蓝桥杯:特殊时间(C++)相关推荐
- 2018蓝桥杯 航班时间和乘积尾零
法一答案均转自https://blog.csdn.net/zhanw15/article/details/79845250 标题:乘积尾零 如下的10行数据,每行有10个整数,请你求出它们的乘积的末尾 ...
- 大学生蓝桥杯比赛时间2020_注意!第十一届蓝桥杯大赛青少年创意编程组比赛开始报名啦!...
第十一届蓝桥杯大赛开始报名啦!!! 关于蓝桥杯,下面这些你需要知道! 1.第十一届的赛制怎么安排? 赛事时间:2019年7.8.9.10.11.12月,2020年1月的第三周周日全国各地区市赛选拔. ...
- 大学生蓝桥杯比赛时间2020_2020蓝桥杯STEAM比赛考试说明
近期蓝桥杯组织了很多场的比赛,下半年基本上每个月都有,让许多家长不知所措.接下来爱思创小程老师就来跟家长们聊一下今年蓝桥杯的参赛攻略. 下半年蓝桥杯比赛,分为三个阶段:steam考试,蓝桥杯省赛,蓝桥 ...
- 大学生蓝桥杯比赛时间2020_赛事通知||2020年第十一届“蓝桥杯全国软件和信息技术专业人才大赛”校内选拔赛...
点击上方蓝字,欢迎关注SMU学生事务中心~ 校内竞赛目的 01 为选拔优秀队员代表我校参加"2020年第十一届"蓝桥杯" 全国软件和信息技术专业人才 大赛 ", ...
- 2020年蓝桥杯比赛时间_我院举办2021年创新创业大赛启动仪式及第12届蓝桥杯动员大会...
为激励我院学生积极提升自身实践能力,促进我院良好的学风,在院长的关怀和指导下,2020年12月10日下午2点,我院在5号教学楼5401教室举办了第12届蓝桥杯动员大会.本次大会主要介绍了创新创业类比赛 ...
- 蓝桥杯比赛时间在什么时候_喝茶的时候使用公道杯有什么讲究,怎么使用不会失礼?...
喝茶的时候,通常都会看到在茶桌上有个肚子肥肥的杯子,主人出汤后并不是直接倒给客人,而是先倒在公道杯中,再分给客人. 那么,关于公道杯的使用,有什么道理呢? 一.公道杯的起源 目前,业界查到的公道杯的 ...
- 大学生蓝桥杯比赛时间2020_【足球比赛】我院参加2020年滨州学院“校长杯”大学生足球比赛...
点击蓝字 关注我们 为活跃校园文化氛围,促进我校各院互动交流,丰富学生们的课余生活,提高学生们的身体素质.11月7日上午10点,我院在小足球场参加滨州学院"校长杯"大学生足球比赛. ...
- JAVA蓝桥杯: 时间转换
问题描述 问题描述 给定一个以秒为单位的时间t,要求用"<h>:<m>:<s>" 的格式来表示这个时间.<H>表示时间,<M& ...
- 蓝桥杯比赛时间在什么时候_梨树什么时候去枝最佳时间?
梨树在生长前期,为了早长树早结果留的枝比较多,到后来树体在不断地长大,光照就在不断地恶化,所以,在修剪时就要去掉一些不合理的大枝来解决光照问题,究竟什么时间修剪好,现在笔者和大家共同讨论一下. 一.梨 ...
- 蓝桥杯比赛时间在什么时候_CFA报名时间是什么时候_CFA
CFA报名时间是什么时候?CFA作为金融行业含金量非常高的证书,大家是否了解呢?多多帮大家整理了CFA报名时间,大家一起来看看吧~ CFA报名时间是什么时候 CFA报名须知 带好相关证件(CFA报名需 ...
最新文章
- pandas使用drop_duplicates函数基于subset参数指定的数据列子集删除重复行、并设置keep参数保留重复行中的最后一个数据行
- 封装SQLDMO操作的类
- oracle 12c 新特性之不可见字段
- python+OpenCV图像处理(一)读取、复制、显示、保存
- windows如何生成ssh密钥
- PHP 报错 Use of undefined constant prop_values - ass...
- Linux下 vim代码编译器的使用
- Core Temp-CPU温度计
- c primer plus中文版_如何成为一名厉害的C/C++程序员?
- 计算机无法安装网卡驱动,win7网卡驱动安装不了怎么修复_WIN7网卡驱动装不上如何解决...
- Doubango代码学习(四):ragel state和message parser
- 猜数字游戏:随机生成一个1-100之间的数据,提示用户猜测,猜大提示过大,猜小提示过小,直到猜中结束游戏
- 笔记本电脑无法连接自己家的网络
- unity 图文混排方案
- 如何借助SVG+CSS用2个小时撸完一个网易云音乐的动效海报(可控制速度)
- 测试必会Linux命令
- odoo12企业版修改邮箱配置
- 孔雀鱼幼鱼的第一个月生长成长重要阶段
- go语言里读写json
- S300V的前世今生