結果
問題 |
No.2963 Mecha DESU
|
ユーザー |
![]() |
提出日時 | 2024-12-29 10:11:34 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
RE
|
実行時間 | - |
コード長 | 1,421 bytes |
コンパイル時間 | 1,984 ms |
コンパイル使用メモリ | 169,016 KB |
実行使用メモリ | 19,096 KB |
最終ジャッジ日時 | 2024-12-29 10:11:46 |
合計ジャッジ時間 | 11,565 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 25 RE * 32 |
ソースコード
#include <bits/stdc++.h> #define FOR(i, a, b) for(ll i = (a); i < (b); i++) #define REP(i, a) FOR(i, 0, a) using namespace std; using ll = long long; const ll MOD = 998244353; struct mll{ ll x; mll(ll _x = 0){ x = (_x % MOD + MOD) % MOD; } }; ostream& operator<<(ostream &os, mll n){ os << n.x; return os; } mll operator +(mll a, mll b){ return mll(a.x + b.x); } mll operator -(mll a, mll b) { return mll(a.x - b.x); } void operator +=(mll &a, mll b) { a = a + b; } mll operator *(mll a, mll b){ return mll(a.x * b.x); } void operator *=(mll &a, mll b){ a = a * b; } mll mpw(mll n, ll m){ if(m < 0){ n = mpw(n, MOD - 2); m *= -1; } mll ret(1), p = n; while(m){ if(m & 1){ ret *= p; } p *= p; m >>= 1; } return ret; } mll minv(mll n){ return mpw(n, -1); } mll operator /(mll a, mll b){ return a * minv(b); } int main(){ ll N, M, K; scanf("%lld %lld %lld", &N, &M, &K); vector<ll> cnt_A(N + 1, 0), cnt(N + 1, 0); REP(i, M) { ll a; scanf("%lld", &a); ++cnt_A[a]; } mll ans(0), minv_M = minv(M); FOR(j, 1, N + 1) { for (ll i = j; i <= N; i += j) { cnt[i] += cnt_A[j]; } } FOR(i, 1, N + 1) { ans += mll(1) - mpw(mll(1) - mll(cnt[i]) * minv_M, K); } printf("%lld\n", ans.x); }