python实现 小鱼的航程(改进版)

本文介绍了一道关于计算小鱼累计游泳距离的算法题,通过数学方式而非循环实现高效求解,适用于双休日模式的计算场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一开始用循环做的题目,python的效率可能是真的低,怎么都跑不过,在线的IDE老是显示超时, 不过我在本地用循环解题是可以跑过的,后面就采用算术解题,也算是暴力解题的一种吧。

题目描述

有一只小鱼,它上午游泳150公里,下午游泳100公里,晚上和周末都休息(实行双休日),假设从周x(1<=x<=7)开始算起,请问这样过了n天以后,小鱼一共累计游泳了多少公里呢?

输入描述:

输入两个整数x,n(表示从周x算起,经过n天,n在long int范围内)。

输出描述:

输出一个整数,表示小鱼累计游泳了多少公里。

示例 :

输入3 10

输出2000

源代码

class Solution:
    def __init__(self) -> None:
        pass
    
    def solution(self, x, n):
        result = 0

        week_day = n-(7-x+1)          # 消去头一个星期剩余的天数
        week_count = week_day//7      # 对剩余天数取整除数
        week_remainder = week_day%7   # 对剩余天数取余
        
        if week_remainder == 6:
            week_remainder = 5        # 余数为6 当做5天来处理
        
        if week_count != 0:
            result = 250 * (5 * week_count + week_remainder) # 一周只游5天加上余数的天数
        else:
            result = 250 * week_remainder                    # 天数没有一个星期的直接算余数

        if n - week_day > 2:
            result += (n-week_day-2)*250                     # 加上头一个星期游的天数

        return result


if __name__ == "__main__":

    
    arr_temp = [int(item) for item in input().strip().split()]
    
    x = int(arr_temp[0])
    n = int(arr_temp[1])


    sol = Solution()
    result = sol.solution(x, n)
    print(result)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值