zoukankan      html  css  js  c++  java
  • 黑色星期五

    首先了解一个数学公式:

    基姆拉尔森计算公式(已知2018-1-30求出星期二)

    W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7      在公式中d表示日期中的日数,m表示月份数,y表示年数。

    注意公式中有个与其他公式不同的地方:
    把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算。

    C++实现这个公式:

     1 #include<iostream>
     2 using namespace std;
     3 
     4 int fun(int y,int m,int d){
     5     if(m==1||m==2){
     6         m+=12;
     7         y--;
     8     }
     9     return (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7+1;
    10 } 
    11 
    12 int main(void){
    13     int year,month,day;
    14     cin>>year>>month>>day;
    15     cout<<fun(year,month,day)<<endl;
    16     return 0;
    17 }

    套用这个公式就可以轻易完成黑色星期五了

    代码如下:

     1 #include<iostream>
     2 using namespace std;
     3 
     4 int fun(int y,int m,int d){
     5     if(m==1||m==2){
     6         m+=12;
     7         y--;
     8     }
     9     return (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7+1;
    10 } 
    11 
    12 int main(void){
    13     int year;
    14     int ans=0; 
    15     cin>>year;
    16     for(int i=1;i<=12;i++){
    17         if(fun(year,i,13)==5) ans++;
    18     }
    19     cout<<ans<<endl;
    20     return 0;
    21 } 
  • 相关阅读:
    Codeforces 691A Fashion in Berland
    HDU 5741 Helter Skelter
    HDU 5735 Born Slippy
    HDU 5739 Fantasia
    HDU 5738 Eureka
    HDU 5734 Acperience
    HDU 5742 It's All In The Mind
    POJ Euro Efficiency 1252
    AtCoder Beginner Contest 067 C
    AtCoder Beginner Contest 067 D
  • 原文地址:https://www.cnblogs.com/cxq1126/p/8387570.html
Copyright © 2011-2022 走看看