結果
問題 | No.895 MESE |
ユーザー |
|
提出日時 | 2019-09-27 22:53:50 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 24 ms / 2,000 ms |
コード長 | 988 bytes |
コンパイル時間 | 552 ms |
コンパイル使用メモリ | 65,784 KB |
実行使用メモリ | 10,948 KB |
最終ジャッジ日時 | 2024-09-25 00:27:34 |
合計ジャッジ時間 | 1,827 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 26 |
ソースコード
#include <iostream>const long long MOD = (long long) 1e9 + 7;const int NMAX = 312345;long long fac[NMAX];long long ifac[NMAX];long long inv[NMAX];long long pow(long long a, long long n) {long long ret = 1;for (;n > 0; n >>= 1, a = a * a % MOD) {if (n % 2 == 1) ret = ret * a % MOD;}return ret;}int main() {fac[0] = fac[1] = ifac[0] = ifac[1] = inv[0] = inv[1] = 1;for (int i = 2; i < NMAX; ++i) {fac[i] = i * fac[i - 1] % MOD;inv[i] = MOD - inv[MOD % i] * (MOD / i) % MOD;ifac[i] = ifac[i - 1] * inv[i] % MOD;}int a, b, c;std::cin >> a >> b >> c;long long ans = 0;for (int i = 0; i <= a - 1; ++i) {int cura = i;int curb = b - 1;int curc = c;long long cnt = fac[cura + curb + curc] * ifac[cura] % MOD * ifac[curb] % MOD * ifac[curc] % MOD;ans += cnt * (pow(2, cura + curb + curc) + MOD - 1) % MOD * curc % MOD * inv[cura + curb + curc] % MOD;ans %= MOD;}std::cout << ans << std::endl;}