青训营X豆包MarsCode 实践记录AI助力 概率问题 | 豆包MarsCode AI 刷题

57 阅读2分钟

问题描述

小U在玩一个盲盒交换游戏,给定两个参数:n和k。将以下公式化简:

image.png

这个公式最终的结果可以简化成一个最简分数p/q

p/q,小U想知道p+q的值模10的结果是多少。

测试样例

样例1:

输入:n = 2 ,k = 5 输出:1

样例2:

输入:n = 2 ,k = 6 输出:6

样例3:

输入:n = 3 ,k = 7 输出:9

样例4:

输入:n = 3 ,k = 9 输出:9

题目分析

这个题目有很大一部分在于数学运算。 最开始要将这个复杂的表达式写成p/q的形式。

  1. 分数的简化与表达 涉及到一个复杂的分数表达式,要求理解如何将给定的公式化简,并将其表示为最简分数。这包括了: 分数的化简:如何计算最简分数,并保证分子和分母没有公约数。

  2. 数学运算与公式化简 题目要求对一个较为复杂的公式进行化简。

代数化简:简化复杂的分式表达式。

分数加法:将两个分数相加时,必须找到最小公倍数。

次方运算:分数的高次幂计算,需要理解如何处理分子和分母。

  1. 最大公约数 (GCD) 的计算 题目要求你最终输出最简分数,这就涉及到如何找到分子和分母的最大公约数(GCD)并简化分数。通过最大公约数简化分数是很常见的数学技巧。

  2. 模运算 最终,需要计算 p+q mod 10,这个操作考察了对模运算的理解和应用,尤其是在处理大数字时如何有效地计算模 10 的结果。 取模运算在之前的文章讨论过什么样的情况不会影响到最终的结果,反而在计算过程中可以简化数字,防止数字超出运算范围。

解题步骤

计算分数的幂: 分别计算分子和分母。

合并两个分数: 并得到一个新分数的分子和分母。

除以 2: 将最终的结果除以 2,更新分母。

化简分数: 通过最大公约数简化分数。

计算结果: 输出

image.png

时间复杂度分析

计算 ( 𝑘 − 1 )^𝑛和 ( 𝑘+ 1 )^𝑛 的时间复杂度是 𝑂 ( 𝑛 )。

最大公约数的计算使用了欧几里得算法,时间复杂度为 𝑂 ( log ⁡ ( min ( 𝑝 , 𝑞 ) ) )。 因此,总体时间复杂度大致为 𝑂 ( 𝑛+ log ⁡ ( min ( 𝑝 , 𝑞 ) ) ) ,其中 𝑝和 q 是最终的分子和分母。

由于 𝑛和 𝑘的大小可能会影响结果的大小,合理优化 GCD 计算的效率对大数据输入非常重要。 对于更大规模的 k 和 n,可能需要考虑更高效的幂运算方式,如快速幂算法,来减少计算时间。