蓝桥杯跑步锻炼

 此题通过一个公式(基姆拉尔森星期计算公式),来将周几计算出来,然后挨个判断就好,分清楚步骤即可。

#include<bits/stdc++.h>
using namespace std;
int Kim_Larson(int y,int m,int d){        //计算周几 
    if(m==1||m==2){
        y--;
        m+=12;
    }
    int w=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7;
    return w;
}
int check_day(int y,int m){                //判断此年此月有多少天 
    int day;
    switch(m){
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:day=31;break;
        case 4:
        case 6:
        case 9:
        case 11:day=30;break;
        case 2:
            if(y%400==0||y%4==0&&y%100!=0)
            day=29;
            else
            day=28;
            break;
    }
    return day;
}
int main(){
    int cnt=0,day;
    for(int y=2000;y<=2019;y++){        //计算2000年1月1日~2019年12月31日之间 
    for(int m=1;m<=12;m++){
        day=check_day(y,m);
    for(int d=1;d<=day;d++){
        if(d==1||Kim_Larson(y,m,d)==1)
        cnt+=2;
        else
        cnt+=1;
    }    
    }
    }
    
    int y=2020;                        //单独计算2020年1月1日~2020年9月30日之间;
    for(int m=1;m<=9;m++){
    day=check_day(y,m);
    for(int d=1;d<=day;d++){
        if(d==1||Kim_Larson(y,m,d)==1)cnt+=2;
        else
        cnt+=1;
    }
    }         
            cnt+=2;                //最后计算2020年10月1日,(因为是月首,直接加2就好)
            cout<<cnt; 
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值