結果
| 問題 |
No.117 組み合わせの数
|
| ユーザー |
eve__fuyuki
|
| 提出日時 | 2018-03-21 08:53:03 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,364 bytes |
| コンパイル時間 | 1,355 ms |
| コンパイル使用メモリ | 161,572 KB |
| 実行使用メモリ | 19,084 KB |
| 最終ジャッジ日時 | 2024-06-24 19:22:57 |
| 合計ジャッジ時間 | 2,391 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | WA * 1 |
ソースコード
#include "bits/stdc++.h"
using namespace std;
#define FOR(i,a,b) for(int i =(a);i<(b);i++)
#define REP(i,n) for(int i=0;i<(n);i++)
#define REPm(i,n) for(int i=(n)-1;i>=0;i--)
#define REP1(i,n) for(int i=1;i<=(n);i++)
#define mp make_pair
typedef long long ll;
#define MAX_N 100000
const ll mod = 1e9+7;
ll factorial[2000000];
ll pow(ll a,ll b){
if(b == 0) return 1;
else if(b%2 == 1) return (a*pow(a,b-1))%mod;
else{
ll sqr = pow(a,b/2);
return (sqr*sqr)%mod;
}
}
ll inv(ll a){
return pow(a,mod-2);
}
ll nPr(int n,int r){
if(n < r) return 0;
else return (factorial[n]*inv(factorial[n-r]))%mod;
}
ll nCr(int n,int r){
if(n < r) return 0;
else{
ll ans = nPr(n,r);
return (ans*inv(factorial[r]))%mod;
}
}
int main(){
int T;
cin >> T;
factorial[0] = 1;
REP1(i,2000000-1){
factorial[i] = (i*factorial[i-1])%mod;
}
REP(i,T){
string S;
cin >> S;
int ci = 0;
while(S[ci] != ',') ci++;
int N = stoi(S.substr(2,ci-2));
int K = stoi(S.substr(ci+1,S.length()-ci-2));
ll ans;
if(S[0] == 'C'){
ans = nCr(N,K);
}
else if(S[0] == 'P'){
ans = nPr(N,K);
}
else{
ans = nCr(N+K-1,K);
}
cout << ans << endl;
}
return 0;
}
eve__fuyuki