青训营X豆包MarsCode技术训练营伴学笔记(1)|小F的永久代币卡回本计划|豆包MarsCode AI刷题

163 阅读3分钟

一、题目解析

1. 问题描述

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

测试样例

样例1:

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

样例2:

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

样例3:

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

2. 题目解析

题目实际求的是一个最小天数 nn,满足以下条件:

n×ban×b≥a

我们可以通过数学公式将其转换为: n=a/bn=⌈a/b​⌉

通过将 aa 除以 bb 并向上取整,就可以得到小F需要的最少天数。

3. 代码详解

使用 Python 的 math.ceil() 方法可以直接计算向上取整,具体代码如下:

import math

def solution(a, b):
    return math.ceil(a / b)
  • 输入:价格 aa 和每天返还的 bb
  • 计算:将 a/ba/b 的结果向上取整,得到所需天数
  • 输出:最少天数

4. 测试结果

  • 输入 a = 10, b = 1:计算 10 / 1 = 10,返回 10
  • 输入 a = 10, b = 2:计算 10 / 2 = 5,返回 5
  • 输入 a = 10, b = 3:计算 10 / 3 ≈ 3.33,取上取整为 4

main函数:

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

运行结果:

True
True
True

5. 时间和空间复杂度分析

时间复杂度
该题的计算核心是一个简单的除法操作,时间复杂度为 O(1)O(1)

空间复杂度
没有额外空间消耗,空间复杂度为 O(1)O(1)

二、知识总结

  • 向上取整的概念
    向上取整(ceil)是一种常用的数学方法,可以快速找到满足不等式的最小整数解。在本题中,直接应用 math.ceil(a / b) 得到答案。

  • 数学解题思维
    从日常问题(买卡回本)转化为数学问题(不等式解法)是一种重要的解题技巧。此题中,理解 n × b ≥ a 的含义可以快速确定解法。

  • 学习建议
    对于初学者,建议多练习题目中涉及的常用数学函数,例如向上取整、向下取整等;并逐渐掌握如何将实际问题转化为数学模型。

三、学习计划

  • 制定刷题计划
    按照从简单到难、从经典题型到实际应用的顺序,逐步提高。可以先集中刷“数学、逻辑、模拟”等基础题型,以打好基础,再逐步挑战“动态规划、图论”等复杂题型。

  • 利用错题进行针对性学习
    建立错题本,分析每道错题的原因,特别是高频出现的错误类型。针对性的复习、重刷错题可以帮助巩固知识、优化解题思路。

  • 高效刷题技巧

    • 每道题都要先自己尝试思考,避免直接看答案。
    • 如果思路卡住,可以给自己设定一定的思考时间,比如 10-15 分钟,之后再查看解答。
    • 养成记录思路的习惯,有助于后期复盘。

四、工具运用

  1. 使用 AI 助手优化学习过程

    • 借助 AI 快速获得题目的思路提示或代码示例,特别是当自己卡住时可以获得新思路。
    • 在复盘时,通过 AI 帮助总结错题分析、形成题型归类表,更加系统化地进行学习。
  2. 结合其他学习资源

    • 可以结合 MarsCode AI 等刷题平台,选取有代表性的题目进行练习。
    • 使用书籍或教程深入理解算法原理,将刷题与理论学习结合起来。