結果
| 問題 |
No.2688 Cell Proliferation (Hard)
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-10-26 02:26:35 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,263 bytes |
| コンパイル時間 | 1,861 ms |
| コンパイル使用メモリ | 195,640 KB |
| 実行使用メモリ | 7,724 KB |
| 最終ジャッジ日時 | 2025-10-26 02:26:39 |
| 合計ジャッジ時間 | 3,315 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 WA * 2 |
| other | AC * 2 WA * 24 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
static const long long MOD = 998244353LL;
long long modpow(long long a, long long e){
long long r = 1 % MOD;
a %= MOD;
while(e){
if(e & 1) r = (__int128)r * a % MOD;
a = (__int128)a * a % MOD;
e >>= 1;
}
return r;
}
long long inv(long long x){ return modpow((x%MOD+MOD)%MOD, MOD-2); }
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
long long P1,P2,Q1,Q2,T;
if(!(cin>>P1>>P2>>Q1>>Q2>>T)) return 0;
long long a = (__int128)(P1%MOD+MOD)%MOD * inv(P2) % MOD; // P1/P2 mod M [web:9]
long long b = (__int128)(Q1%MOD+MOD)%MOD * inv(Q2) % MOD; // Q1/Q2 mod M [web:9]
long long one_plus_a = (1 + a) % MOD; // (1 + P1/P2) [web:9]
long long term1 = modpow(one_plus_a, T); // (1+a)^T [web:9]
unsigned long long e = (unsigned long long)T * (unsigned long long)(T-1) / 2ULL; // T(T-1)/2 [web:9]
long long term2 = modpow(b, e); // b^{T(T-1)/2} [web:9]
long long ans = (__int128)term1 * term2 % MOD; // final product [web:9]
cout << ans << "\n";
return 0;
}