43:相关月
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
-
“相关月”是指那些在一年中月份的第一天星期数相同的月份。例如,九月和十二月是相关的,因为九月一日和十二月一日的星期数总是相同的。两个月份相关,当且仅当两个月份第一天相差的天数能被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
- 来源
- 北京大学医学部计算概论08期末考试题
-
1 #include<iostream> 2 using namespace std; 3 int month[21]={0,31,28,31,30,31,30,31,31,30,31,30,31};//非闰年 4 int rmonth[21]={0,31,29,31,30,31,30,31,31,30,31,30,31};//闰年 5 int flag=1; 6 int main() 7 { 8 int n; 9 int year; 10 int month1; 11 int month2; 12 cin>>n; 13 for(int i=1;i<=n;i++) 14 { 15 cin>>year>>month1>>month2; 16 if(month1>month2) 17 { 18 int d=month1;month1=month2;month2=d; 19 } 20 if((year%4==0&&year%100!=0)||year%400==0) 21 { 22 int begin=1;//默认第一天是星期一 23 for(int j=month1;j<=month2-1;j++) 24 { 25 for(int k=1;k<=rmonth[j];k++) 26 { 27 if(begin==7) 28 begin=1; 29 else 30 begin++; 31 32 } 33 34 } 35 if(begin==1) 36 cout<<"YES"<<endl; 37 else 38 cout<<"NO"<<endl; 39 }//闰年 40 else 41 { 42 int begin=1;//默认第一天是星期一 43 for(int j=month1;j<=month2-1;j++) 44 { 45 for(int k=1;k<=month[j];k++) 46 { 47 if(begin==7) 48 begin=1; 49 else begin++; 50 } 51 } 52 if(begin==1) 53 cout<<"YES"<<endl; 54 else 55 cout<<"NO"<<endl; 56 }//非闰年 57 } 58 return 0; 59 }