結果
| 問題 |
No.117 組み合わせの数
|
| ユーザー |
goodbaton
|
| 提出日時 | 2015-06-25 02:48:09 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,480 bytes |
| コンパイル時間 | 662 ms |
| コンパイル使用メモリ | 72,540 KB |
| 実行使用メモリ | 28,928 KB |
| 最終ジャッジ日時 | 2024-07-07 17:31:12 |
| 合計ジャッジ時間 | 13,358 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | TLE * 1 |
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:75:10: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
75 | scanf("%d",&t);
| ~~~~~^~~~~~~~~
main.cpp:78:14: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
78 | scanf(" %c(%d,%d)",&S,&n,&k);
| ~~~~~^~~~~~~~~~~~~~~~~~~~~~~
ソースコード
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <string>
#include <cmath>
#include <algorithm>
#include <vector>
#include <queue>
#include <stack>
#include <map>
using namespace std;
typedef long long ll;
ll factorial(int n,int M){
if(n<=1) return 1;
return (factorial(n-1,M)*n)%M;
}
ll power(int k,int n,int M){
if(n==0) return 1;
if(n==1) return (ll)k;
ll ret = power(k,n/2,M);
ret=(ret*ret)%M;
if(n%2==1)
ret=(ret*k)%M;
return ret;
}
//nCm (mod p) p is prime number
int C(int n,int m,int M){
if(m==0 || n==m) return 1;
ll chi = factorial(n,M);
ll mot = (factorial(m,M) * factorial(n-m,M))%M;
mot = power((int)mot,M-2,M);
ll ret = (chi*mot)%M;
return (int)ret;
}
int P(int n,int m,int M){
if(m==0) return 1;
ll chi = factorial(n,M);
ll mot = factorial(n-m,M);
mot = power((int)mot, M-2,M);
ll ret = (chi*mot)%M;
return (int)ret;
}
int H(int n,int m,int M){
return C(n+m-1,m,M);
}
int main(){
int t,n,k,ans;
int mod = 1000000007;
char S;
scanf("%d",&t);
for(int i=0;i<t;i++){
scanf(" %c(%d,%d)",&S,&n,&k);
if(S=='C'){
ans = C(n,k,mod);
}else if(S=='P'){
ans = P(n,k,mod);
}else{
ans = H(n,k,mod);
}
printf("%d\n",ans);
}
return 0;
}
goodbaton