洛谷做题11:P1424 小鱼的航程(改进版)
文章目录
- P1424 小鱼的航程(改进版)
- 题目描述
- 输入格式
- 输出格式
- 说明/提示
- 思路分析及代码
P1424 小鱼的航程(改进版)
题目描述
有一只小鱼,它平日每天游泳 250250250 公里,周末休息(实行双休日),假设从周 xxx 开始算起,过了 nnn 天以后,小鱼一共累计游泳了多少公里呢?
输入格式
输入两个正整数 x,nx,nx,n,表示从周 xxx 算起,经过 nnn 天。
输出格式
输出一个整数,表示小鱼累计游泳了多少公里。
输入输出样例 #1
输入 #1
3 10
输出 #1
2000
说明/提示
数据保证,1≤x≤71\le x \le 71≤x≤7,1≤n≤1061 \le n\le 10^61≤n≤106。
思路分析及代码
一周只有工作日5天游泳,有几个完整的周,就有几个5天。再把剩下的天数,算一下有几个工作日。
求完整的周数:总天数n//7
剩下的天数:总天数%7
难点在于剩下有几天是工作日,就要结合开始的周天x去判断。
假设当前是星期 x(x 的范围是 1-7,1 代表周一,7 代表周日)
过了 i 天后(i 从 0 开始计数,0 表示当天),理论上的星期数是 x + i
但直接计算 x + i 会有两个问题:
结果可能超过 7(比如周一加 5 天是周六,3+5=8)
模运算后需要把 0 转换为 7(因为周日是 7 而不是 0)
所以需要修正:
先减 1:x + i - 1,把星期范围从 1-7 转换为 0-6(方便模运算)
模 7:(x + i - 1) % 7,得到 0-6 的结果(0 代表周一,6 代表周日)
加 1:(x + i - 1) % 7 + 1,把结果转换回 1-7 的范围(1 代表周一,7 代表周日)
x, n = map(int, input().split())# 计算完整的周数和剩余天数
full_weeks = n // 7
remaining_days = n % 7# 每个完整周有5个工作日
total_days = full_weeks * 5# 计算剩余天数中的工作日数量
for i in range(remaining_days):# 计算当前是星期几(1-7)current_day = (x + i - 1) % 7 + 1# 1-5是工作日,6-7是周末if current_day <= 5:total_days += 1# 计算总距离
print(total_days * 250)