結果

問題 No.2688 Cell Proliferation (Hard)
コンテスト
ユーザー limbo
提出日時 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
権限があれば一括ダウンロードができます

ソースコード

diff #

#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;
}
0