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⌋点经验值。我们可以使用一个循环来计算小明在每一天的训练中得到的经验值,并将其累加起来。

具体的算法如下:

  1. 读取输入的天数 n。
  2. 初始化总经验值 experience 为 0。
  3. 对于每一天 i,从 1 到 n:
    • 计算当天的题目数量 numQuestions 为 ⌊n/i⌋。
    • 计算当天的经验值 exp 为 ⌊√i⌋。
    • 将当天的经验值 exp 累加到总经验值 experience 中。
  4. 输出总经验值 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训练计划中经验值计算的算法和实现方法。

ACM训练计划:AK之路与经验值计算

原文地址: https://www.cveoy.top/t/topic/bDQs 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录