結果
| 問題 |
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;
}