题目描述
【问题描述】
小蓝每天都锻炼身体。
正常情况下,小蓝每天跑 1 千米。如果某天是周一或者月初(1 日),为了
激励自己,小蓝要跑 2 千米。如果同时是周一或月初,小蓝也是跑 2 千米。
小蓝跑步已经坚持了很长时间,从 2000 年 1 月 1 日周六(含)到 2020 年
10 月 1 日周四(含)。请问这段时间小蓝总共跑步多少千米?
样例
结果: 8879
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
using namespace std;
int m[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
bool check(int date){
int year=date/10000;
int month=date%10000/100;
int day=date%100;
if(month<=0||month>12) return false;
if(day<=0) return false;
if(month==2){
int leap=(year%4==0&&year%100!=0)||year%400==0;
if(leap+28<day) return false;
}
if(month!=2&&day>m[month]) return false;
return true;
}
int main(int argc, char** argv) {
int week=6;
int ans=0;
for(int i=20000101;i<=20201001;i++){
if(check(i)){
if(week%7==1||i%100==1){
ans+=2;
}
else{
ans++;
}
week++;
week%=7;
}
}
printf("%d",ans);
return 0;
}