码迷,mamicode.com
首页 > 其他好文 > 详细

南阳219----An problem about date

时间:2017-04-18 09:22:24      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:case   class   color   span   log   switch   clu   cst   stdio.h   

 1 /*
 2 1600年一月一日为星期6,所以算出ymd与1600-1-1差多少天对7取余即可
 3 */
 4 #include<stdio.h>
 5 int a[10000]={0};
 6 int main()
 7 {
 8     int i,y,m,d,t = 0,ans;
 9     for(i=1600; i<9601; i+=4)
10     {
11         if(i%100 != 0 || i%400==0)
12             ++t;
13         a[i-1599] = a[i-1598] = a[i-1597] = a[i-1596] = t;
14     }
15     while(~scanf("%d%d%d",&y,&m,&d))
16     {
17         ans = 5 + (y-1600)*365 + a[y-1600];
18         switch(m)
19         {
20             case 2:d+=31;break;
21             case 3:d+=59;break;
22             case 4:d+=90;break;
23             case 5:d+=120;break;
24             case 6:d+=151;break;
25             case 7:d+=181;break;
26             case 8:d+=212;break;
27             case 9:d+=243;break;
28             case 10:d+=273;break;
29             case 11:d+=304;break;
30             case 12:d+=334;break;
31         }
32         if( (m>2 && y%4==0 && y%100!=0) || y%400==0 && m>2)
33             d++;
34         ans += d;
35         printf("%d\n",ans%7);
36     }
37     return 0;
38 }

 

 1 //最优解
 2 #include<cstdio>
 3 int main()
 4 {
 5     int y,m,d;
 6     while(~scanf("%d%d%d",&y,&m,&d))
 7     {
 8         if(m<3) m+=12,--y;
 9         printf("%d\n",(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7); //蔡勒公式的变种
10     }
11 }

 

南阳219----An problem about date

标签:case   class   color   span   log   switch   clu   cst   stdio.h   

原文地址:http://www.cnblogs.com/qq188380780/p/6726109.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!