結果
問題 |
No.2940 Sigma Sigma Div Floor Problem
|
ユーザー |
|
提出日時 | 2024-10-18 23:02:19 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 3 ms / 6,000 ms |
コード長 | 725 bytes |
コンパイル時間 | 4,221 ms |
コンパイル使用メモリ | 252,440 KB |
最終ジャッジ日時 | 2025-02-24 21:11:32 |
ジャッジサーバーID (参考情報) |
judge4 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 29 TLE * 1 |
ソースコード
#include <bits/stdc++.h> using namespace std; #include <atcoder/all> using namespace atcoder; using mint = modint998244353; using ll = long long; int main () { ll N; cin >> N; ll h = sqrt(N); h = max(0ll, h - 10); while (h * h <= N) h ++; h --; mint ans = 0; for (ll i = 1; i <= h; i ++) { mint q = N / i, r = N % i; ans += q * (r + 1); ans += (q * (q - 1) * i) / 2; } ll fl = h + 1; while (N / fl >= h) { mint q = N / fl, r = N % fl; ans += q * (r + 1); ans += (q * (q - 1) * fl) / 2; fl ++; } for (ll q = h - 1; q; q --) { mint al = (N) / (q + 1) + 1, bt = N / q; mint s = al + bt, d = bt - al + 1; ans += d * (N + 1) * q; ans -= s * d * q * (q + 1) / 4; } cout << ans.val() << endl; }