結果
問題 |
No.1260 たくさんの多項式
|
ユーザー |
|
提出日時 | 2020-10-17 15:05:07 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 191 ms / 2,000 ms |
コード長 | 843 bytes |
コンパイル時間 | 212 ms |
コンパイル使用メモリ | 81,792 KB |
実行使用メモリ | 61,056 KB |
最終ジャッジ日時 | 2024-07-21 02:31:14 |
合計ジャッジ時間 | 8,935 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 61 |
ソースコード
n = int(input()) mod = 10 ** 9 + 7 ans = 0 # 次数が2次以上 # nをi進数に直すイメージ for i in range(2, int(n ** .5) + 1): now = n while now > 0: ans += now % i # 下の桁から埋める now //= i ans += now ans %= mod # i * x + jを考える sq = int(n ** .5) + 1 for i in range(1, sq): l = n // (i + 1) + 1 # xの係数がiである数のうち、最も小さい if l < sq: # これは2次以上で数えた break r = n // i # 最もでかい m = r - l + 1 one = i * m # xの係数の合計 # 0次の係数について考える # 区間[l, r]の数は連続してるので、総和でうまくいける # 初項n % r, 公差i 項数 m → 総和 zero = m * (2 * (n % r) + (m - 1) * i) // 2 % mod ans = (ans + one + zero) % mod print(ans)