結果
問題 | No.1258 コインゲーム |
ユーザー |
|
提出日時 | 2020-10-16 22:25:27 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 196 ms / 2,000 ms |
コード長 | 811 bytes |
コンパイル時間 | 606 ms |
コンパイル使用メモリ | 68,240 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-07-20 22:23:16 |
合計ジャッジ時間 | 8,532 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 50 |
ソースコード
#include <iostream> #include <vector> using namespace std; const int MOD = 1e9 + 7; long long repow(long long x, long long y){ if(y == 0) return 1; long long res = 1; while(y > 0){ if(y & 1) res = res * x % MOD; x = x * x % MOD; y >>= 1; } return res; } int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int testcase; cin >> testcase; while(testcase--){ long long N, M, X; cin >> N >> M >> X; long long temp = repow(M + 1, N); long long temp2 = repow(1 - M, N); long long t = repow(2, MOD - 2) % MOD; if(X == 1){ cout << ((temp - temp2) * t % MOD + MOD) % MOD << endl; } else{ cout << ((temp + temp2) * t % MOD + MOD) % MOD << endl; } } }