43:相关月

时间:2022-05-08
本文章向大家介绍43:相关月,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

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 }