• 南阳219----An problem about date


     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
    ",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
    ",(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7); //蔡勒公式的变种
    10     }
    11 }
  • 相关阅读:
    删除指定字符
    Palindromes&nbsp;_easy&nbsp;version
    统计元音
    查找最大元素
    首字母变大写
    Intent加强
    GUI_键盘事件
    GUI_鼠标事件
    GUI_事件监听机制与ActionListener演示
    GUI概述与Frame演示
  • 原文地址:https://www.cnblogs.com/qq188380780/p/6726109.html
Copyright © 2020-2023  润新知