結果
問題 |
No.1573 Divisor Function
|
ユーザー |
👑 |
提出日時 | 2021-06-27 14:23:24 |
言語 | C (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 590 bytes |
コンパイル時間 | 525 ms |
コンパイル使用メモリ | 30,336 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-06-25 11:35:43 |
合計ジャッジ時間 | 1,485 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 43 |
ソースコード
#include <stdio.h> const int Mod = 998244353; int naive(int n, int m) { int i, j, k; long long ans = 0, tmp, sum; for (i = 1, sum = 0; i <= m; i++) { tmp = n / i; if (i == m || tmp == n / (i + 1)) break; ans += (tmp + 3) * tmp / 2 * i % Mod; } for (; tmp >= 1; tmp--) { i = n / (tmp + 1) + 1; j = n / tmp; if (i > m) break; if (j > m) j = m; sum = (long long)(j + i) * (j - i + 1) / 2 % Mod; ans += (tmp + 3) * tmp / 2 * sum % Mod; } return ans % Mod; } int main() { int n, m; scanf("%d %d", &n, &m); printf("%d\n", naive(n, m)); fflush(stdout); return 0; }