ACM训练计划:AK之路与经验值计算
AK,即All Killed,是指一名选手在比赛中将所有题目全部AC(Accept)。它是每个ACM选手的梦想,而防AK则是出题人应尽的义务。通常,比赛中最难的题目被称作防AK题。
'cy教练,我……我想打ACM!',小萌新说道。
教练给小萌新们发布了历时 n 天的AK训练计划。在第 i 天的训练计划中,有⌊n/i⌋道题目,每道题目可以给小萌新们带来⌊√i⌋点经验值。(⌊i⌋表示 i 的下取整)
现在,小明同学希望AK每一天的训练计划,但他想知道经过这 n 天的训练后,他能得到多少经验值呢?
输入
输入仅一行,表示训练计划的天数 n (1 ≤ n ≤ 10⁹)。
输出
输出一行,表示 n 天后小明得到的总经验值。
算法解析
根据题目描述,我们需要计算小明在经历了 n 天的训练后得到的总经验值。根据训练计划的规则,在第 i 天的训练计划中,有⌊n/i⌋道题目,每道题目可以给小萌新们带来⌊√i⌋点经验值。我们可以使用一个循环来计算小明在每一天的训练中得到的经验值,并将其累加起来。
具体的算法如下:
- 读取输入的天数 n。
- 初始化总经验值 experience 为 0。
- 对于每一天 i,从 1 到 n:
- 计算当天的题目数量 numQuestions 为 ⌊n/i⌋。
- 计算当天的经验值 exp 为 ⌊√i⌋。
- 将当天的经验值 exp 累加到总经验值 experience 中。
- 输出总经验值 experience。
代码示例
import math
n = int(input())
experience = 0
for i in range(1, n+1):
numQuestions = n//i
exp = math.isqrt(i)
experience += exp
print(experience)
希望这篇文章能帮助你更好地理解ACM训练计划中经验值计算的算法和实现方法。
原文地址: https://www.cveoy.top/t/topic/bDQs 著作权归作者所有。请勿转载和采集!