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;
}
上一题
下一题