2022年 11月 9日

循环!循环!循环!——洛谷#P1424 小鱼的航程(Python实现)

题目描述

有一只小鱼,它平日每天游泳 250 公里,周末休息(实行双休日),假设从周 x(1≤x≤7) 开始算起,过了 n(n≤106) 天以后,小鱼一共累计游泳了多少公里呢?

Python解答

解答1

  • 不循环,用 if 语句判断。
  1. 利用总天数Days,求出整周的工作日天数 WorkDays,以及及剩余天数 RestDays。WorkDays乘250公里。
  2. 利用开始的那一天Start,加上剩余天数RestDays,判断这些天里是否有周末。
  3. 判断 1)如果开始天数加上剩余天数为7,或者开始的那一天为7,那么认为休息一天。剩余天数RestDays减一。
  4. 判断 2)如果开始天数加上剩余天数大于等于8,那么认为休息两天。剩余天数RestDays减二。
  5. WorkDays乘250公里,加上剩余天数乘250公里。
  1. # -*- coding: utf-8 -*-
  2. # @Time : 2019/10/31 17:27
  3. # @Author : 小晓酱
  4. # @File : luoguu.py
  5. # @Software: PyCharm
  6. Start, Days = (int(i.strip()) for i in input().split())
  7. WorkDays = Days // 7 * 5
  8. RestDays = Days % 7
  9. if RestDays != 0:
  10. if RestDays + Start == 7 or Start == 7:
  11. RestDays -= 1
  12. elif RestDays + Start >= 8:
  13. RestDays -= 2
  14. Distance = (WorkDays + RestDays) * 250
  15. print(Distance)

 

解答2

  • 常规解法。当天数不能被6或7整除时,总数加250。
  1. # -*- coding: utf-8 -*-
  2. # @Time : 2019/10/31 17:27
  3. # @Author : 小晓酱
  4. # @File : luoguu.py
  5. # @Software: PyCharm
  6. Start, Days = (int(i.strip()) for i in input().split())
  7. Distance = 0
  8. for i in range(Start, Start + Days):
  9. if i % 7 != 0 and i % 7 != 6:
  10. Distance += 250
  11. print(Distance)