結果
問題 |
No.2318 Phys Bone Maker
|
ユーザー |
|
提出日時 | 2023-05-27 17:11:35 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 756 bytes |
コンパイル時間 | 2,241 ms |
コンパイル使用メモリ | 200,784 KB |
最終ジャッジ日時 | 2025-02-13 09:22:06 |
ジャッジサーバーID (参考情報) |
judge5 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 WA * 2 |
other | AC * 22 WA * 23 |
ソースコード
#include <bits/stdc++.h> using namespace std; using ll = long long; unordered_map<ll, ll> mp, mp_cn; ll m = 998244353; ll cnt_yk(ll a){ if (mp_cn.find(a) != mp_cn.end()) { return mp_cn[a]; } if (a == 1) { return mp_cn[a] = 1; } mp_cn[a] = 0; for (ll i = 1; i * i <= a; i ++) { if (a % i == 0) { mp_cn[a] ++; if (i * i < a) { mp_cn[a] ++; } } } return mp_cn[a]; } ll calc(ll a) { if (mp.find(a) != mp.end()) { return mp[a]; } mp[a] = 0; for (ll i = 1; i * i <= a; i ++) { if (a % i == 0) { mp[a] += (calc(i) * cnt_yk(i)) % m; if (i * i < a && i > 1) { mp[a] += (calc(a / i) * cnt_yk(a / i)) % m; } mp[a] %= m; } } return mp[a]; } int main() { ll N; cin >> N; mp[1] = 1; cout << calc(N) << endl; }