-
【问题描述】
小蓝每天都锻炼身体。
正常情况下,小蓝每天跑 1 千米。如果某天是周一或者月初(1 日),为了激励自己,小蓝要跑 2 千米。如果同时是周一或月初,小蓝也是跑 2 千米。
小蓝跑步已经坚持了很长时间,从 2000 年 1 月 1 日周六(含)到 2020 年10 月 1 日周四(含)。请问这段时间小蓝总共跑步多少千米? -
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一
个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。 -
注意开始和结束时间,别忘了!!
#include<bits/stdc++.h>
using namespace std;
#define js ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
int a[21][13][32];
int day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int read(){
int ans=0,flag=1;
char ch;ch=getchar();
while((ch<'0'||ch>'9')&&ch!='-') ch=getchar();
if(ch=='-') flag=-1,ch=getchar();
while(ch>='0'&&ch<='9') ans=(ans<<3)+(ans<<1)+ch^48,ch=getchar();
return ans*flag;
}
bool isyear(int x){
int y=2000+x;
if((y%4==0&&y%100!=0)||y%400==0) return true;
else return false;
}
int main(){
js;
int cnt=6;//注意开始是周六
int ans=0;
for(int y=0;y<=20;++y){
if(isyear(y)) day[2]=29;
else day[2]=28;
for(int m=1;m<=12;++m){
for(int d=1;d<=day[m];++d){
if(y==20&&m==10&&d==2) {//记得结束
//在这里就要结束了 用break不行 只能退出一个循环 要直接return
cout<<ans<<endl;
return 0;
}
if(cnt==8) cnt=1;
a[y][m][d]=cnt++;
if(d==1||a[y][m][d]==1) ans+=2;//两者某一种为真或两者都为真就是2
else ans+=1;
}
}
}
return 0;
}