CCF——节日
来源:互联网 发布:g41 g42编程实例 编辑:程序博客网 时间:2024/04/27 21:30
问题描述:
有一类节日的日期并不是固定的,而是以“a月的第b个星期c”的形式定下来的,比如说母亲节就定为每年的五月的第二个星期日。
现在,给你a,b,c和y1, y2(1850 ≤ y1, y2 ≤ 2050),希望你输出从公元y1年到公元y2年间的每年的a月的第b个星期c的日期。
提示:关于闰年的规则:年份是400的整数倍时是闰年,否则年份是4的倍数并且不是100的倍数时是闰年,其他年份都不是闰年。例如1900年就不是闰年,而2000年是闰年。
为了方便你推算,已知1850年1月1日是星期二。
输入格式:
输入包含恰好一行,有五个整数a, b, c, y1, y2。其中c=1, 2, ……, 6, 7分别表示星期一、二、……、六、日。
输出格式:
对于y1和y2之间的每一个年份,包括y1和y2,按照年份从小到大的顺序输出一行。
如果该年的a月第b个星期c确实存在,则以”yyyy/mm/dd”的格式输出,即输出四位数的年份,两位数的月份,两位数的日期,中间用斜杠“/”分隔,位数不足时前补零。
如果该年的a月第b个星期c并不存在,则输出”none”(不包含双引号)。
样例输入:
5 2 7 2014 2015
样例输出
2014/05/112015/05/10
约定
满足:1 ≤ a ≤ 12,1 ≤ b ≤ 5,1 ≤ c ≤ 7,1850 ≤ y1, y2 ≤ 2050。
思路:
此题主要还是求日期,看题目要求,觉得做个日历表出来,直接查询就了当完事,不过看到题目后面,假设1850年的1月1日为周二,就决定放弃这条选择了,1850年到2015年,这中间的数据得记录多少,而且某些还不用,所以太过浪费时间。再想想,采用每周的周期来求解,1850年的第一个周二是1月1日,那么第二个周二不就是1月8日吗,中间相乘一个周期——7,那么明年的1月1日是周几,直接用今年的所有天数对7进行求余数即可,为0代表周日,其余分别代表周一,周二,周三,周四,周五,周六。那么基本解法就出来了。
Code:
#include <iostream>using namespace std;int a1[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 }; //平年int a2 = 29; //闰年,2月是29天int main(){ int m, n, day, y1, y2; while (cin >> m >> n >> day >> y1 >> y2) { day %= 7; int s = 0; //统计天数 for (int i = 1850; i < y1; i++) { if ((i % 4 == 0 && i % 100 != 0) || (i% 400 == 0)) s += 366; else s += 365; } for (int i = y1; i <= y2; i++) { int t = 0; int _day = 0; bool flag = false; int _current = 0; int _m = 0; //存储日期号数 if ((i % 4 == 0 && i % 100 != 0) || (i % 400 == 0)) flag = true; //计算当年的前几个月的天数 for (int j = 0; j < m - 1; j++) if (j == 1 && flag == true) t += a2; else t += a1[j]; s += t; s += 2; int _tes = s % 7; //进行判断是该月的周几,多少号 for (int k = 0; k < n; k++) for (int p = 1; p <= 7; p++) { t++; if (_tes % 7 == day&&k==n-1) _m = _current; _tes++; _current++; } s -= t; s -= 2; //计算完当年 if (flag) s += 366; else s += 365; //按照格式输出 if (n > 4) { cout << "none" << endl; continue; } if (m < 10) { cout << i << "/" << "0" << m << "/"; } else cout << i << "/" << m << "/"; if (_m< 10) { if (_m==0) { cout << "0" << _m+1 << endl; } else cout << "0" << _m << endl; } else cout << _m << endl; } } return 0;}
阅读全文
1 0
- CCF——节日
- CCF—节日 20150303
- CCF——节日(模拟)
- 【CCF】节日
- CCF 节日
- CCF--节日
- CCF节日
- CCF节日
- ccf 节日
- ccf节日
- CCF节日
- CCF 201503-3 节日
- CCF-节日-201503-3
- ccf 201503-3 节日
- CCF-201503-3 节日
- CCF 201503-3 节日
- CCF csp试题-节日
- CCF-201503-3-节日
- 掌柜大作战(15):营业执照图片识别,有点尴尬
- ORA-28002的一个细节
- PAT---1009说反话
- pomelo(七) windows 环境安装
- hdu2680 choose the best route
- CCF——节日
- “/”应用程序中的服务器错误。未能加载文件或程序集“XXXXXX”或它的某一个依赖项。试图加载格式不正确的程序。
- HDU
- 三星供应商辟谣,国行版Note 7爆炸事件与电池无关
- 技术解读:iPhone 7新机爆出“嘶嘶声”缺陷,到底是怎么回事?
- Djando获取上传文件数据和数据在页面循环输出
- [LeetCode]395. Longest Substring with At Least K Repeating Characters
- 自关联
- C# 手机点菜带后台管理系统