結果
問題 | No.673 カブトムシ |
ユーザー | ahe100 |
提出日時 | 2018-06-28 17:09:43 |
言語 | C++11 (gcc 11.4.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 1,802 bytes |
コンパイル時間 | 766 ms |
コンパイル使用メモリ | 75,404 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-06-30 23:29:58 |
合計ジャッジ時間 | 1,433 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
6,812 KB |
testcase_01 | AC | 1 ms
6,940 KB |
testcase_02 | AC | 2 ms
6,940 KB |
testcase_03 | AC | 2 ms
6,940 KB |
testcase_04 | AC | 1 ms
6,940 KB |
testcase_05 | AC | 2 ms
6,944 KB |
testcase_06 | AC | 2 ms
6,940 KB |
testcase_07 | AC | 2 ms
6,940 KB |
testcase_08 | AC | 2 ms
6,940 KB |
testcase_09 | AC | 2 ms
6,940 KB |
testcase_10 | AC | 2 ms
6,940 KB |
testcase_11 | AC | 2 ms
6,940 KB |
testcase_12 | AC | 2 ms
6,940 KB |
testcase_13 | AC | 1 ms
6,940 KB |
testcase_14 | AC | 2 ms
6,944 KB |
testcase_15 | AC | 2 ms
6,940 KB |
testcase_16 | AC | 2 ms
6,944 KB |
testcase_17 | AC | 2 ms
6,944 KB |
ソースコード
#include<cstdio> #include<cstring> #include<vector> #include<queue> #include<stack> #include<algorithm> #include<cmath> #include<climits> #include<string> #include<set> #include<numeric> #include<map> #include<iostream> using namespace std; #define rep(i,n) for(int i = 0;i<((int)(n));i++) #define reg(i,a,b) for(int i = ((int)(a));i<=((int)(b));i++) #define irep(i,n) for(int i = ((int)(n)-1);i>=0;i--) #define ireg(i,a,b) for(int i = ((int)(b));i>=((int)(a));i--) typedef long long ll; typedef pair<ll, ll> mp; ll mod = 1e9+7; ll inf = 1e18; struct Factorial{ long long N,mod; vector<long long> fact,inv; long long mod_pow(long long x,long long n){ long long res=1; while(n){ if(n&1) (res*=x)%=mod; (x*=x)%=mod; n>>=1; } return res; } long long Inverse(long long n){ return mod_pow(n,mod-2); } Factorial(){} Factorial(long long sn,long long smod){ N=sn; mod=smod; fact.reserve(sn+1); inv.reserve(sn+1); //初期化 fact[0]=1; for(long long i=1;i<=sn;i++){ fact[i]=(fact[i-1]*i) % mod; } inv[sn]=Inverse(fact[sn]); for(long long i=sn;i>0;i--){ inv[i-1]=(inv[i]*i) % mod; } } long long Fact(long long n){ if(n<0)return 0; return fact[n]; } long long Inv(long long n){ if(n<0)return 0; return inv[n]; } long long Combination(long long n,long long r){ if(n<r)return 0; if(r<=0)return 0; long long ans=1; ans = (ans*Fact(n)) % mod; ans = (ans*Inv(r)) % mod; ans = (ans*Inv(n-r)) % mod; return ans; } }; int main(void){ ll b,c,d,ans; cin>>b>>c>>d; b%=mod; c%=mod; Factorial f(1,mod); if(c!=1){ ans=b; ans=(ans*c) % mod; ll t=(1+mod-f.mod_pow(c,d)) % mod; ans=(ans*t) % mod; t=1+mod-c%mod; ans=(ans*f.Inverse(t)) % mod; }else{ ans=b % mod; d%=mod; ans=(ans*d) % mod; } cout<<ans<<endl; return 0; }