結果
問題 | No.1299 Random Array Score |
ユーザー |
![]() |
提出日時 | 2024-09-27 18:15:15 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 25 ms / 2,000 ms |
コード長 | 3,426 bytes |
コンパイル時間 | 2,374 ms |
コンパイル使用メモリ | 200,860 KB |
最終ジャッジ日時 | 2025-02-24 13:27:27 |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 34 |
ソースコード
#include<bits/stdc++.h>using namespace std;using uint = unsigned int;using ll = long long;using ull = unsigned long long;template<class T> using V = vector<T>;template<class T> using VV = V<V<T>>;template<class T> using VVV = V<VV<T>>;template<class T> using VVVV = VV<VV<T>>;#define rep(i,n) for(ll i=0ll;i<n;i++)#define REP(i,a,n) for(ll i=a;i<n;i++)const long long INF = (1LL << 60);const long long mod99 = 998244353;const long long mod107 = 1000000007;const long long mod = mod99;#define eb emplace_back#define be(v) (v).begin(),(v).end()#define all(i,v) for(auto& i : v)#define UQ(v) sort(be(v)), v.erase(unique(be(v)), v.end())#define LB(x,v) (lower_bound(be(v),(x))-(v).begin())#define UB(x,v) (upper_bound(be(v),(x))-(v).begin())#define dout() cout << fixed << setprecision(20)#define randinit() srand((unsigned)time(NULL))template<class T, class U> bool chmin(T& t, const U& u) { if (t > u){ t = u; return 1;} return 0; }template<class T, class U> bool chmax(T& t, const U& u) { if (t < u){ t = u; return 1;} return 0; }struct Combination{vector<long long> fac, inv, finv;long long MOD;Combination(long long N = 200100, long long p = 998244353) : fac(N, 1), inv(N, 1), finv(N, 1), MOD(p){for(long long i = 2; i < N; i++){fac[i] = fac[i-1] * i % MOD;inv[i] = MOD - inv[MOD%i] * (MOD/i) % MOD;finv[i] = finv[i-1] * inv[i] % MOD;}}long long com(long long n, long long k){if(n < k) return 0;if(n < 0 || k < 0) return 0;return fac[n] * finv[k] % MOD * finv[n-k] % MOD;}long long per(long long n, long long k){if(n < k) return 0;if(n < 0 || k < 0) return 0;return fac[n] * finv[n-k] % MOD;}};long long modpow(long long n, long long k, long long p = mod){long long a = n % p;long long ans = 1;while(k != 0) {if(k & 1) ans = ans * a % p;k /= 2;a = a * a % p;}return ans;}// n^(-1) ≡ b (mod p) となる b を求めるlong long modinv(long long n, long long p = mod) {// if(n == 1) return 1;// return p - modinv(p % n) * (p / n) % p;return modpow(n, p - 2, p);}// n^k ≡ b (mod p) となる最小の k を求めるlong long modlog(long long n, long long b, long long p = mod){long long sqrt_p = sqrt(p);unordered_map<long long , long long> n_pow;long long memo = 1;for(long long i = 0; i < sqrt_p; i ++){if(!n_pow.count(memo)) n_pow[memo] = i;memo = memo * n % p;}memo = modinv(memo, p);long long ans = 0;while(!n_pow.count(b)){if(ans >= p) return -1;ans += sqrt_p;b = b * memo % p;}ans += n_pow[b];return ans % (p - 1);}// ax + by = gcd(a, b) を満たす (x, y) が格納されるlong long ext_gcd(long long a, long long b, long long &x, long long &y){if(b == 0){x = 1;y = 0;return a;}long long d = ext_gcd(b, a%b, y, x);y -= a/b*x;return d;}void solve(){ll n, k;cin >> n >> k;ll s = 0;rep(i,n){ll x;cin >> x;s += x;}ll ans = s%mod99 * modpow(2, k, mod99) % mod99;cout << (ans)%mod99 << endl;}int main(){cin.tie(nullptr);ios::sync_with_stdio(false);int t=1;// cin >> t;rep(i,t) solve();}