結果
| 問題 |
No.117 組み合わせの数
|
| ユーザー |
hotpepsi
|
| 提出日時 | 2015-09-08 00:58:22 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,454 bytes |
| コンパイル時間 | 593 ms |
| コンパイル使用メモリ | 60,904 KB |
| 実行使用メモリ | 19,072 KB |
| 最終ジャッジ日時 | 2024-07-19 04:55:38 |
| 合計ジャッジ時間 | 1,795 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | WA * 1 |
ソースコード
#include <iostream>
#include <algorithm>
#include <sstream>
#include <cstdio>
using namespace std;
typedef long long LL;
const LL MOD = 1000000007;
LL extgcd(LL a, LL b, LL &x, LL &y) {
LL d = a;
if (b != 0) {
d = extgcd(b, a % b, y, x);
y -= (a / b) * x;
} else {
x = 1, y = 0;
}
return d;
}
LL modinv(LL a, LL m) {
LL x, y;
extgcd(a, m, x, y);
return (m + x % m) % m;
}
LL modpow(LL x, LL n, LL mod)
{
LL a = 1;
for (; n > 0; n >>= 1) {
if (n & 1) a = (a * x) % mod;
x = (x * x) % mod;
}
return a;
}
int main(int argc, char *argv[])
{
LL T;
string s;
{
getline(cin, s);
stringstream ss(s);
ss >> T;
}
LL fact[2000001];
fact[0] = 1;
for (LL a = 1; a <= 2000000; ++a) {
fact[a] = (fact[a - 1] * a) % MOD;
}
for (int t = 0; t < T; ++t) {
char type;
LL n, k;
getline(cin, s);
sscanf(s.c_str(), "%c(%lld,%lld)", &type, &n, &k);
LL ans = 0, a, b, c;
switch (type) {
case 'C':
if (k <= n) {
a = fact[n];
b = modinv(fact[k], MOD);
c = modinv(fact[n - k], MOD);
ans = (((a * b) % MOD) * c) % MOD;
}
break;
case 'P':
if (k <= n) {
a = (fact[n] * fact[k]) % MOD;
b = modinv(fact[k], MOD);
c = modinv(fact[n - k], MOD);
ans = (((a * b) % MOD) * c) % MOD;
}
break;
case 'H':
a = fact[n + k - 1];
b = modinv(fact[k], MOD);
c = modinv(fact[n - 1], MOD);
ans = (((a * b) % MOD) * c) % MOD;
break;
}
cout << ans << endl;
}
return 0;
}
hotpepsi