結果
問題 |
No.2963 Mecha DESU
|
ユーザー |
![]() |
提出日時 | 2024-12-29 09:47:41 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,615 bytes |
コンパイル時間 | 1,835 ms |
コンパイル使用メモリ | 169,440 KB |
実行使用メモリ | 19,548 KB |
最終ジャッジ日時 | 2024-12-29 09:49:29 |
合計ジャッジ時間 | 98,305 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 27 TLE * 30 |
ソースコード
#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(){ ios::sync_with_stdio(false); cin.tie(NULL); ll X = 316; ll N, M, K; cin >> N >> M >> K; vector<ll> cnt_A(X + 1, 0), cnt(N + 1, 0); REP(i, M) { ll a; cin >> a; if (a <= X) { ++cnt_A[a]; } else { for (ll j = a; j <= N; j += a) { ++cnt[j]; } } } mll ans(0), minv_M = minv(M); FOR(i, 1, N + 1) { ll m = cnt[i]; FOR(j, 1, X + 1) { if (i % j == 0) { m += cnt_A[j]; } } ans += mll(1) - mpw(mll(1) - mll(m) * minv_M, K); } cout << ans << endl; }