結果
| 問題 | No.940 ワープ ε=ε=ε=ε=ε=│;p>д<│ |
| コンテスト | |
| ユーザー |
vjudge1
|
| 提出日時 | 2026-01-14 23:42:28 |
| 言語 | C++17 (gcc 15.2.0 + boost 1.89.0) |
| 結果 |
AC
|
| 実行時間 | 123 ms / 5,000 ms |
| コード長 | 930 bytes |
| 記録 | |
| コンパイル時間 | 1,754 ms |
| コンパイル使用メモリ | 215,668 KB |
| 実行使用メモリ | 66,168 KB |
| 最終ジャッジ日時 | 2026-01-14 23:42:32 |
| 合計ジャッジ時間 | 4,040 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 5 |
| other | AC * 22 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int MAXN = 2.2e6 + 5, Mod = 1e9 + 7;
ll ans, fac[MAXN] = {1}, inv[MAXN], facinv[MAXN] = {1}, a[MAXN];
int p, q, r, n;
ll C(int n, int m) {
if (n < m) return (n == -1);
return fac[n] * facinv[m] % Mod * facinv[n - m] % Mod;
}
int main() {
ios::sync_with_stdio(0), cin.tie(0);
cin >> p >> q >> r;
n = p + q + r + 1;
for (int i = 1; i <= n + max({p, q, r}); i++) {
fac[i] = fac[i - 1] * i % Mod;
inv[i] = (i > 1 ? (Mod - Mod / i) * inv[Mod % i] % Mod : 1);
facinv[i] = facinv[i - 1] * inv[i] % Mod;
}
for (int i = 0; i <= n; i++) {
a[i] = C(n, i) * ((n - i + 1) & 1 ? -1 : 1);
//cout << a[i] << ' ';
a[i] += (i ? a[i - 1] : 1), (a[i] *= (Mod + 1) / 2) %= Mod;
(ans += a[i] * C(i + p - 1, p) % Mod * C(i + q - 1, q) % Mod * C(i + r - 1, r)) %= Mod;
//cout << a[i] << ' ' << ans << " | ";
}
cout << (ans + Mod) % Mod;
return 0;
}
vjudge1