禁止转载,该文章内容并非教学,仅为个人笔记。

问题描述

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++)相关推荐

  1. 2018蓝桥杯 航班时间和乘积尾零

    法一答案均转自https://blog.csdn.net/zhanw15/article/details/79845250 标题:乘积尾零 如下的10行数据,每行有10个整数,请你求出它们的乘积的末尾 ...

  2. 大学生蓝桥杯比赛时间2020_注意!第十一届蓝桥杯大赛青少年创意编程组比赛开始报名啦!...

    第十一届蓝桥杯大赛开始报名啦!!! 关于蓝桥杯,下面这些你需要知道! 1.第十一届的赛制怎么安排? 赛事时间:2019年7.8.9.10.11.12月,2020年1月的第三周周日全国各地区市赛选拔. ...

  3. 大学生蓝桥杯比赛时间2020_2020蓝桥杯STEAM比赛考试说明

    近期蓝桥杯组织了很多场的比赛,下半年基本上每个月都有,让许多家长不知所措.接下来爱思创小程老师就来跟家长们聊一下今年蓝桥杯的参赛攻略. 下半年蓝桥杯比赛,分为三个阶段:steam考试,蓝桥杯省赛,蓝桥 ...

  4. 大学生蓝桥杯比赛时间2020_赛事通知||2020年第十一届“蓝桥杯全国软件和信息技术专业人才大赛”校内选拔赛...

    点击上方蓝字,欢迎关注SMU学生事务中心~ 校内竞赛目的 01 为选拔优秀队员代表我校参加"2020年第十一届"蓝桥杯" 全国软件和信息技术专业人才 大赛 ", ...

  5. 2020年蓝桥杯比赛时间_我院举办2021年创新创业大赛启动仪式及第12届蓝桥杯动员大会...

    为激励我院学生积极提升自身实践能力,促进我院良好的学风,在院长的关怀和指导下,2020年12月10日下午2点,我院在5号教学楼5401教室举办了第12届蓝桥杯动员大会.本次大会主要介绍了创新创业类比赛 ...

  6. 蓝桥杯比赛时间在什么时候_喝茶的时候使用公道杯有什么讲究,怎么使用不会失礼?...

    喝茶的时候,通常都会看到在茶桌上有个肚子肥肥的杯子,主人出汤后并不是直接倒给客人,而是先倒在公道杯中,再分给客人. 那么,关于公道杯的使用,有什么道理呢? ​一.公道杯的起源 目前,业界查到的公道杯的 ...

  7. 大学生蓝桥杯比赛时间2020_【足球比赛】我院参加2020年滨州学院“校长杯”大学生足球比赛...

    点击蓝字 关注我们 为活跃校园文化氛围,促进我校各院互动交流,丰富学生们的课余生活,提高学生们的身体素质.11月7日上午10点,我院在小足球场参加滨州学院"校长杯"大学生足球比赛. ...

  8. JAVA蓝桥杯: 时间转换

    问题描述 问题描述 给定一个以秒为单位的时间t,要求用"<h>:<m>:<s>" 的格式来表示这个时间.<H>表示时间,<M& ...

  9. 蓝桥杯比赛时间在什么时候_梨树什么时候去枝最佳时间?

    梨树在生长前期,为了早长树早结果留的枝比较多,到后来树体在不断地长大,光照就在不断地恶化,所以,在修剪时就要去掉一些不合理的大枝来解决光照问题,究竟什么时间修剪好,现在笔者和大家共同讨论一下. 一.梨 ...

  10. 蓝桥杯比赛时间在什么时候_CFA报名时间是什么时候_CFA

    CFA报名时间是什么时候?CFA作为金融行业含金量非常高的证书,大家是否了解呢?多多帮大家整理了CFA报名时间,大家一起来看看吧~ CFA报名时间是什么时候 CFA报名须知 带好相关证件(CFA报名需 ...

最新文章

  1. pandas使用drop_duplicates函数基于subset参数指定的数据列子集删除重复行、并设置keep参数保留重复行中的最后一个数据行
  2. 封装SQLDMO操作的类
  3. oracle 12c 新特性之不可见字段
  4. python+OpenCV图像处理(一)读取、复制、显示、保存
  5. windows如何生成ssh密钥
  6. PHP 报错 Use of undefined constant prop_values - ass...
  7. Linux下 vim代码编译器的使用
  8. Core Temp-CPU温度计
  9. c primer plus中文版_如何成为一名厉害的C/C++程序员?
  10. 计算机无法安装网卡驱动,win7网卡驱动安装不了怎么修复_WIN7网卡驱动装不上如何解决...
  11. Doubango代码学习(四):ragel state和message parser
  12. 猜数字游戏:随机生成一个1-100之间的数据,提示用户猜测,猜大提示过大,猜小提示过小,直到猜中结束游戏
  13. 笔记本电脑无法连接自己家的网络
  14. unity 图文混排方案
  15. 如何借助SVG+CSS用2个小时撸完一个网易云音乐的动效海报(可控制速度)
  16. 测试必会Linux命令
  17. odoo12企业版修改邮箱配置
  18. 孔雀鱼幼鱼的第一个月生长成长重要阶段
  19. go语言里读写json
  20. S300V的前世今生

热门文章

  1. ExoPlayer浅析
  2. Vs2005下重复定义的问题解决 ... already defined in ...
  3. 上海店宝宝:从考拉海购新思路的启发
  4. Mysql创建、使用循环函数
  5. 谈谈个人对 TDD (测试驱动开发) 的理解
  6. 百年前的小学课本令人汗颜!
  7. Python:视频拆分成一帧一帧的图片
  8. 七、Redis集群搭建
  9. OPERA价格学习(二)
  10. node插件, MD5密码加密 与 解密