题目描述
小蓝计划在某天的日期中出现 11 时跑 55 千米,否则只跑 11 千米。注意日期中出现 11 不仅指年月日也指星期。
请问按照小蓝的计划,20232023 年小蓝总共会跑步锻炼多少千米?
例如,55 月 11 日、11 月 1313 日、1111 月 55 日、44 月 33 日(星期一)小蓝会跑 55 千米,而 55 月 2323 日小蓝会跑 11 千米。
(示例日期均为 20232023 年)
输入格式
无。
输出格式
一行一个整数,表示答案。
输入输出样例
无
题目思路
照题意模拟即可!
先分析可能出现1的日期:
- 月份1,10,11,12
- 星期一
- 每月1,21,31,10∼19日
那么就以此判断,写代码即可!
代码
#include<bits/stdc++.h>
using namespace std;
int a[1001]={0,31,28,31,30,31,30,31,31,30,31,30,31}/*月份日期表*/,a1[1001],s=0,x=0,y=6;
bool f[1001];
int main(){
for(int i=1;i<=12;i++){
a1[i]=a[i];
a1[i]+=a1[i-1];//前缀和月份
}
for(int i=1;i<=12;i++){
if(i==1||i==10||i==12||i==11){
for(int j=a1[i-1]+1;j<=a1[i];j++){
f[j]=1;//月份
}
}
}
for(int i=1;i<=12;i++){
for(int j=1;j<=a[i];j++){
x++;//按年算的日期
y++;//星期
if(f[x]==1||j%10==1||j/10==1||y%7==1){//锻炼五千米
s+=5;
}
else{//一千米
s++;
}
}
}
cout<<s;
return 0;
}