用户输出
0
系统信息
Exited with return code 0
编号 | 题目 | 状态 | 分数 | 总时间 | 内存 | 代码 / 答案文件 | 提交者 | 提交时间 |
---|---|---|---|---|---|---|---|---|
#66903 | #1322. [L2-1]来吃糖果吧 | Accepted | 100 | 41 ms | 348 K | C++ 11 / 1.2 K | 越杰(计算机)001-唐雨萧 | 2022-03-25 19:22:01 |
#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
#define _MOD ((ll)1e9 + (ll)7)
ll pow_mod(ll a, ll e, ll p);
ll x_to_y(ll x, ll y) {
ll ans = 1;
for (int i = x; i <= y; i++) ans = ans * i % _MOD;
return ans;
}
int main() {
int n, a, b;
cin >> n >> a >> b;
ll ans = (pow_mod(2, n, _MOD) + _MOD - (ll)1) % _MOD;
// cout << ans << endl;
ll cna = 1;
if (a > n / 2)
a = n - a;
cna = x_to_y(n - a + 1, n) * pow_mod(x_to_y(1, a), _MOD - 2, _MOD) % _MOD;
// for (ll i = 0; i < a; i++) {
// cna = (cna % _MOD) * (n - i) % _MOD * pow_mod(i + 1, _MOD - 2, _MOD) % _MOD;
// }
// cout << cna;
ll cnb = 1;
cnb = x_to_y(n - b + 1, n) * pow_mod(x_to_y(1, b), _MOD - 2, _MOD) % _MOD;
if (b > n / 2)
b = n - b;
// for (ll i = 0; i < b; i++) {
// cnb = (cnb % _MOD) * (n - i) % _MOD * pow_mod(i + 1, _MOD - 2, _MOD) % _MOD;
// }
// cout << endl << cnb << endl;
ans = (ans + (ll)2 * _MOD - cna - cnb) % _MOD;
cout << ans;
}
ll pow_mod(ll a, ll e, ll p) {
if (e <= 0)
return 1;
ll resby = pow_mod(a, e / 2, p);
return resby * resby % p * ((e & 1) ? a : 1) % p;
}
用户输出
382492393
系统信息
Exited with return code 0
用户输出
173776972
系统信息
Exited with return code 0
用户输出
810092880
系统信息
Exited with return code 0
用户输出
506071717
系统信息
Exited with return code 0
用户输出
582594886
系统信息
Exited with return code 0