黑色星期五

首先了解一个数学公式:

基姆拉尔森计算公式(已知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 } 

 

转载于:https://www.cnblogs.com/cxq1126/p/8387570.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值