結果
問題 | No.1258 コインゲーム |
ユーザー | 19iso |
提出日時 | 2020-10-16 22:34:02 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 256 ms / 2,000 ms |
コード長 | 964 bytes |
コンパイル時間 | 1,323 ms |
コンパイル使用メモリ | 166,472 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-07-20 22:54:14 |
合計ジャッジ時間 | 11,126 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 50 |
ソースコード
#include <bits/stdc++.h> using namespace std; #define int long long #define rep(i, n) for(int i = 0; i < n; i++) #define all(a) a.begin(), a.end() #define P pair<int, int> #define F first #define S second #define INF 1e18 #define MOD 998244353 int mod_pow(int x,int n,int mod){ int res=1; while(n>0){ if(n&1)res=res*x%mod; x=x*x%mod; n>>=1; } return res; } int solve(int N,int M,int X){ int res; int x=mod_pow(M+1,N,1000000007),y=mod_pow(M-1,N,1000000007); if(X==0){ if(N%2==0){ res=x+y; }else{ res=x-y; } }else{ if(N%2==0){ res=x-y; }else{ res=x+y; } } if(res%2==0)res/=2; else { res=(res+1000000007)/2; } res=(res+1000000007)%1000000007; return res; } signed main(){ int S;cin>>S; rep(i,S){ int N,M,X;cin>>N>>M>>X; cout<<solve(N,M,X)<<endl; } }