题目来源:OpenJudge - 02:不吉利日期
总时间限制:1000ms 内存限制:65536k
题目描述:在国外,每月的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天
大体思路:for循环十二个月,判断哪个月31天30天,再for循环天数,若此时n==5&&j==13,输出i月份注意换行,注意1.1要单独拿出,因为题目给出的本身就是1.1的星期号,如果不特判一下,若你输入的是星期一,运行时就会变为星期二。
附代码:
#include<bits/stdc++.h>
using namespace std;
int main() {
int n;
cin>>n;
for(int i=1; i<=12; i++) {
if(i==1)
{
for(int j=2;j<=31;j++)
{
n++;
if(n==8)
{
n=1;
}
if(j==13&&n==5)
cout<<1<<endl;
}
}
if(i==3||i==5||i==7||i==8||i==10||i==12) {
for(int j=1; j<=31; j++) {
++n;
if(n>7||n<1) {
n=1;
}
if(j==13&&n==5) {
cout<<i<<endl;
}
}
} else if(i==4||i==6||i==9||i==11) {
for(int j=1; j<=30; j++) {
++n;
if(n>7||n<1) {
n=1;
}
if(j==13&&n==5) {
cout<<i<<endl;
}
}
} else if(i==2) {
for(int j=1; j<=28; j++) {
++n;
if(n>7||n<1) {
n=1;
}
if(j==13&&n==5) {
cout<<i<<endl;
}
}
}
}
return 0;
}