結果
問題 |
No.1260 たくさんの多項式
|
ユーザー |
![]() |
提出日時 | 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()