結果

問題 No.2576 LCM Pattern
ユーザー minato
提出日時 2023-11-21 23:55:05
言語 C++23
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 2 ms / 2,000 ms
コード長 700 bytes
コンパイル時間 2,834 ms
コンパイル使用メモリ 249,184 KB
実行使用メモリ 5,376 KB
最終ジャッジ日時 2024-09-26 22:23:46
合計ジャッジ時間 3,318 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 23
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>
#include <atcoder/modint>
using namespace std;
using mint = atcoder::modint998244353;

vector<pair<int, int>> prime_factorize(int N) {
    vector<pair<int, int>> res;
    for (int i = 2; i * i <= N; ++i) {
        if (N % i != 0) continue;
        int cnt = 0;
        while (N % i == 0) {
            ++cnt;
            N /= i;
        }
        res.push_back({i, cnt});
    }
    if (N != 1) res.push_back({N, 1});
    return res;
}

int main() {
    int N, M;
    cin >> N >> M;

    auto pf = prime_factorize(M);
    mint ans = 1;
    for (const auto& [key, value] : pf) {
        ans *= mint(value + 1).pow(N) - mint(value).pow(N);
    }
    cout << ans.val() << endl;
}
0