青训营X豆包MarsCode AI刷题-永久代币卡回本天数计算 | 豆包MarsCode AI 刷题

37 阅读2分钟

题解:永久代币卡回本天数计算

问题描述

小牛最近迷上了一款游戏,她面前有一个永久代币卡的购买机会。该卡片的价格为 a 勾玉,每天登录游戏可以返还 b 勾玉。小牛想知道她还需要登录多少天,才能让购买的永久代币卡回本。

输入

  • a:永久代币卡的价格(勾玉)。
  • b:每天登录游戏返还的勾玉数量。

输出

  • 小牛需要登录的天数,使得返还的勾玉总数达到或超过 a

测试样例

样例1

  • 输入:a = 10, b = 1
  • 输出:10

样例2

  • 输入:a = 10, b = 2
  • 输出:5

样例3

  • 输入:a = 10, b = 3
  • 输出:4

解题思路

  1. 初始化

    • 初始化一个变量 sum 用于记录累计返还的勾玉总数,初始值为 0
    • 初始化一个变量 days 用于记录登录的天数,初始值为 0
  2. 循环计算

    • 使用 while 循环,当 sum 小于 a 时,继续循环。
    • 每次循环中,days 增加 1,表示登录了一天。
    • 每次循环中,sum 增加 b,表示返还了 b 勾玉。
  3. 返回结果

    • sum 达到或超过 a 时,退出循环,返回 days

代码实现

def solution(a: int, b: int) -> int:
    days = 0
    sum = 0
    while sum < a:
        days += 1
        sum += b
    return days

if __name__ == '__main__':
    print(solution(10, 1) == 10)
    print(solution(10, 2) == 5)
    print(solution(10, 3) == 4)

代码解释

  1. 初始化变量

    • days = 0:初始化登录天数为 0
    • sum = 0:初始化累计返还的勾玉总数为 0
  2. 循环计算

    • while sum < a:当累计返还的勾玉总数小于 a 时,继续循环。
    • days += 1:每次循环中,登录天数增加 1
    • sum += b:每次循环中,累计返还的勾玉总数增加 b
  3. 返回结果

    • sum 达到或超过 a 时,退出循环,返回 days,即需要登录的天数。

测试结果

  • solution(10, 1) 返回 10,表示需要登录 10 天才能回本。
  • solution(10, 2) 返回 5,表示需要登录 5 天才能回本。
  • solution(10, 3) 返回 4,表示需要登录 4 天才能回本。

总结

通过简单的循环计算,我们可以轻松地计算出小牛需要登录多少天才能让购买的永久代币卡回本。这个问题的核心在于理解每天返还的勾玉数量和总价格之间的关系,并通过循环累加的方式逐步逼近目标值。