小蓝每天都锻炼身体。
正常情况下,小蓝每天跑 1 千米。如果某天是周一或者月初(1 日),为了
激励自己,小蓝要跑 2 千米。如果同时是周一或月初,小蓝也是跑 2 千米。
小蓝跑步已经坚持了很长时间,从 2000 年 1 月 1 日周六(含)到 2020 年
10 月 1 日周四(含)。请问这段时间小蓝总共跑步多少千米?
答案:8879
我算的8880
真的是跪了,当时既写代码,又用日历,还用计算器算
最后还是代码写的有问题
错误原因是:去年是闰年,我更新了2月为29天,今年不是闰年了,我忘记把2月改成28天了,还用的29天
直接上代码了
#include<iostream>
using namespace std;
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int main(){
//2000年1月1日是周六
int week=5;
//记录一共多少周一或者1号
int ans=0;
//记录一共多少天
int num=0;
for(int year=2000;year<=2019;year++){
if((year%100!=0&&year%4==0)||year%400==0){
a[2]=29;
}else{
a[2]=28;
}
for(int month=1;month<=12;month++){
for(int day=1;day<=a[month];day++){
if((day==1&&week==0)||day==1||week==0){
++ans;
}
week=week+1;
week=week%7;
++num;
}
}
}
if((2020%100!=0&&2020%4==0)||2020%400==0){
a[2]=29;
}else{
a[2]=28;
}
for(int month=1;month<=9;month++){
for(int day=1;day<=a[month];day++){
if((day==1&&week==0)||day==1||week==0){
++ans;
}
week=week+1;
week=week%7;
++num;
}
}
//2是2020年10月1日,跑两公里,因为之前的循环里没有算到10月1日
cout<<num+ans+2<<endl;
return 0;
}
有问题可以留言交流٩(๑❛ᴗ❛๑)۶