2723:不吉利日期
-
总时间限制:
- 1000ms 内存限制:
- 65536kB
-
描述
-
在国外,每月的13号和每周的星期5都是不吉利的。特别是当13号那天恰好是星期5时,更不吉利。已知某年的一月一日是星期w,并且这一年一定不是闰年,求出这一年所有13号那天是星期5的月份,按从小到大的顺序输出月份数字。(w=1..7)
输入
- 输入有一行,即一月一日星期几(w)。(1 <= w <= 7) 输出
- 输出有一到多行,每行一个月份,表示该月的13日是星期五。 样例输入
-
7
样例输出
-
1 10
提示
-
1、3、5、7、8、10、12月各有31天
4、6、9、11月各有30天
2月有28天 - 【思路】先求得每个月的13号距离1月1日的天数,再对其进行判断是否为星期五。
- 【代码】AC的C++代码如下:
-
#include <iostream> using namespace std; int months[12] = { 0, 0+31, 0+31+28, 0+31+28+31, 0+31+28+31+30, 0+31+28+31+30+31, 0+31+28+31+30+31+30, 0+31+28+31+30+31+30+31, 0+31+28+31+30+31+30+31+31, 0+31+28+31+30+31+30+31+31+30, 0+31+28+31+30+31+30+31+31+30+31, 0+31+28+31+30+31+30+31+31+30+31+30 }; int main() { int w; cin >> w; //先计算距离最近的一个星期五需要的天数 if (w <= 5) w = 5 - w; else if (w == 6) w = 6; else if (w == 7) w = 5; for (int i = 0;i < 12;i++) { //计算距离1月1日的天数 int days = months[i] + 12; if (days % 7 == w) cout << i + 1 << endl; } return 0; }