AcWing--因数平方和-->数论,整数分块

4662. 因数平方和 - AcWing题库(python)

# 输入
n = int(input())
mod =int(1e9 + 7)


# 求平方和
def square_sum(n):
    return n * (n + 1) * (2 * n + 1) // 6 % mod


# 结果
res = 0
i=1
while(i<=n):
    # 找到开始跟结尾
    x = n // i
    y = n // x

    res = (res + (square_sum(y) - square_sum(i - 1)) * x) % mod
    i=y+1
print((res+mod)%mod)

你可能感兴趣的:(ACWing,算法,python)