結果
| 問題 |
No.117 組み合わせの数
|
| ユーザー |
東前頭十一枚目
|
| 提出日時 | 2019-04-05 10:40:44 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,794 bytes |
| コンパイル時間 | 1,819 ms |
| コンパイル使用メモリ | 164,540 KB |
| 実行使用メモリ | 27,820 KB |
| 最終ジャッジ日時 | 2025-01-02 19:10:41 |
| 合計ジャッジ時間 | 3,789 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | RE * 1 |
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:48:13: warning: ‘n’ may be used uninitialized [-Wmaybe-uninitialized]
48 | int n,k,tmp=0;
| ^
main.cpp:48:15: warning: ‘k’ may be used uninitialized [-Wmaybe-uninitialized]
48 | int n,k,tmp=0;
| ^
ソースコード
#include <bits/stdc++.h>
#define rep(i,n) for(int i=0;i<n;i++)
#define all(x) (x).begin(),(x).end()
using namespace std;
const int INF=1145141919,MOD=1e9+7;
const long long LINF=8931145141919364364,LMOD=998244353;
inline long long mod(long long n,long long m){return(n%m+m)%m;}
// const int dx[]={1,0,-1,0,1,1,-1,-1},dy[]={0,-1,0,1,1,-1,-1,1};
struct Combination{
const int MAX=1000010;
const int MOD;
vector<long long> FAC;
vector<long long> INV;
vector<long long> FAC_INV;
Combination(const int MOD):
MOD(MOD)
{
FAC=vector<long long>(MAX);
INV=vector<long long>(MAX);
FAC_INV=vector<long long>(MAX);
FAC[0]=INV[1]=FAC_INV[0]=1;
for(int i=1;i<MAX;i++){
FAC[i]=FAC[i-1]*i%MOD;
if(i>1) INV[i]=MOD-INV[MOD%i]*(MOD/i)%MOD;
FAC_INV[i]=FAC_INV[i-1]*INV[i]%MOD;
}
}
int C(int n,int r){
if(n<0||r<0||n<r) return 0;
return FAC[n]*FAC_INV[r]%MOD*FAC_INV[n-r]%MOD;
}
int P(int n,int r){
if(n<0||r<0||n<r) return 0;
return FAC[n]*FAC_INV[n-r]%MOD;
}
int H(int n,int r){
return C(n+r-1,r);
}
};
int main(){
const int MOD=1e9+7;
Combination com(MOD);
int t; cin>>t;
while(t--){
string s; cin>>s;
int n,k,tmp=0;
for(int i=2;i<(int)s.size();i++){
if(s[i]==')'){
k=tmp;
}else if(s[i]==','){
n=tmp;
tmp=0;
}else{
tmp*=10;
tmp+=s[i]-'0';
}
}
if(s[0]=='C') cout<<com.C(n,k)<<endl;
if(s[0]=='P') cout<<com.P(n,k)<<endl;
if(s[0]=='H') cout<<com.H(n,k)<<endl;
}
return 0;
}
東前頭十一枚目