結果
| 問題 |
No.1260 たくさんの多項式
|
| コンテスト | |
| ユーザー |
lam6er
|
| 提出日時 | 2025-03-31 17:28:04 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 182 ms / 2,000 ms |
| コード長 | 1,028 bytes |
| コンパイル時間 | 196 ms |
| コンパイル使用メモリ | 82,604 KB |
| 実行使用メモリ | 76,168 KB |
| 最終ジャッジ日時 | 2025-03-31 17:28:25 |
| 合計ジャッジ時間 | 8,248 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 61 |
ソースコード
MOD = 10**9 + 7
def main():
N = int(input())
M = int(N ** 0.5)
total = 0
# Process small i (i <= M)
for i in range(2, M + 1):
n = N
s = 0
while n > 0:
n, d = divmod(n, i)
s += d
total = (total + s) % MOD
# Process large i (i > M)
max_k = N // (M + 1)
for k in range(1, max_k + 1):
L = (N // (k + 1)) + 1
R = N // k
L = max(L, M + 1)
if R < L:
continue
cnt = R - L + 1
# Calculate term1 = N * cnt
term1 = (N % MOD) * cnt % MOD
# Calculate sum_x = sum (i-1 for i in L..R) = sum from (L-1) to (R-1)
a = R - 1
b = L - 2
if b < 0:
sum_x = a * (a + 1) // 2
else:
sum_x = (a * (a + 1) // 2) - (b * (b + 1) // 2)
term2 = (k % MOD) * (sum_x % MOD) % MOD
contribution = (term1 - term2) % MOD
total = (total + contribution) % MOD
print(total % MOD)
if __name__ == "__main__":
main()
lam6er