测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A41111. 相关月

填空题 中等

题目描述

相关月

题目描述

“相关月”是指那些在一年中月份的第一天星期数相同的月份。例如,九月和十二月是相关的,因为九月一日和十二月一日的星期数总是相同的。两个月份相关,当且仅当两个月份第一天相差的天数能被7整除,也就是说,这两天相差为几个整星期。又如,二月和三月一般都是相关月,因为二月有28天,能被7整除,也恰好为4个星期。而在闰年,一月和二月的相关月与它们在平年的相关月是不同的,因为二月有29天,其后每个月份的第一天星期数都推后了一天。

输入格式

输入的第一行为整数n(n ≤ 200),其后n行,每行三个整数,依次为一个年份和两个月份,整数之间用一个空格分隔。

输出格式

输出有n行,对应于每个输入的年份和相应两个月份,如果这两个月份是相关的,则输出YES;否则,输出NO。

样例输入

5

1994 10 9

1935 12 1

1957 1 9

1917 9 12

1948 1 4

样例输出

NO

NO

NO

YES

YES

参考答案

#include<iostream> using namespace std; int month[21]={0,31,28,31,30,31,30,31,31,30,31,30,31};//非闰年 int rmonth[21]={0,31,29,31,30,31,30,31,31,30,31,30,31};//闰年 int flag=1; int main() { int n; int year; int month1; int month2; cin>>n; for(int i=1;i<=n;i++) { cin>>year>>month1>>month2; if(month1>month2) { int d=month1;month1=month2;month2=d; } if((year%4==0&&year%100!=0)||year%400==0) { int begin=1;//默认第一天是星期一 for(int j=month1;j<=month2-1;j++) { for(int k=1;k<=rmonth[j];k++) { if(begin==7) begin=1; else begin++; } } if(begin==1) cout<<"YES"<<endl; else cout<<"NO"<<endl; }//闰年 else { int begin=1;//默认第一天是星期一 for(int j=month1;j<=month2-1;j++) { for(int k=1;k<=month[j];k++) { if(begin==7) begin=1; else begin++; } } if(begin==1) cout<<"YES"<<endl; else cout<<"NO"<<endl; }//非闰年 } return 0; }
上一题 下一题