Zeller公式计算星期几HDU 6112 今夕何夕

Posted shulin~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Zeller公式计算星期几HDU 6112 今夕何夕相关的知识,希望对你有一定的参考价值。

acm.hdu.edu.cn/showproblem.php?pid=6112

【思路】

公式计算即可,注意特判2月29号

Zeller公式里,计算出的week不能直接模7,要保证week是正数

【AC】

技术分享
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<string>
 5 #include<algorithm>
 6 #include<cmath>
 7 
 8 using namespace std;
 9 
10 bool leap(int y)
11 {
12     if(y%400==0) return true;
13     if(y%4==0&&y%100!=0) return true;
14     return false;
15 }
16 int Zeller(int y,int m,int d)
17 {
18        if(m==1||m==2)
19        {
20          y--;
21         m+=12;          
22     }
23     int c=y/100;
24     y-=c*100;
25     int w=y+y/4+c/4-2*c+26*(m+1)/10+d-1;
26     while(w<0) w+=7;
27     w%=7;
28     return w;
29 }
30 int main()
31 {
32     int T;
33     scanf("%d",&T);
34     while(T--)
35     {
36         int y,m,d;
37         scanf("%d-%d-%d",&y,&m,&d);
38         int week=Zeller(y,m,d);
39         while(1)
40         {
41             y++;
42             if(m==2&&d==29)
43             {
44                 if(leap(y)&&Zeller(y,m,d)==week)
45                 {
46                     printf("%d\n",y);
47                     break;
48                 }
49             }
50             else
51             {
52                 if(Zeller(y,m,d)==week)
53                 {
54                     printf("%d\n",y);
55                     break;
56                 }
57             }
58         }
59     }
60     return 0;
61 }
Zeller

 

以上是关于Zeller公式计算星期几HDU 6112 今夕何夕的主要内容,如果未能解决你的问题,请参考以下文章

HDU 6112 今夕何夕 (这也要写??)

2017"百度之星"程序设计大赛 - 初赛(A)-1001.小C的倍数问题(HDU6108) 1005.今夕何夕-蔡勒公式 (HDU6112)

计算某一天是星期几?—— 蔡勒(Zeller)公式

hdu 6112 今夕何夕

hdu 6112 今夕何夕(模拟)

蔡勒(Zeller)公式及其推导:快速将任意日期转换为星期数