[蓝桥杯 2023 国 Python A] 跑步计划

题目描述

小蓝计划在某天的日期中出现 11 时跑 55 千米,否则只跑 11 千米。注意日期中出现 11 不仅指年月日也指星期。

请问按照小蓝的计划,20232023 年小蓝总共会跑步锻炼多少千米?

例如,55 月 11 日、11 月 1313 日、1111 月 55 日、44 月 33 日(星期一)小蓝会跑 55 千米,而 55 月 2323 日小蓝会跑 11 千米。

(示例日期均为 20232023 年)

输入格式

无。

输出格式

一行一个整数,表示答案。

输入输出样例

题目思路

照题意模拟即可!

先分析可能出现1的日期:

  1. 月份1,10,11,12
  2. 星期一
  3. 每月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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值