[题目链接]https://atcoder.jp/contests/abc156/tasks/abc156_d

简单数论问题,题意就是有n个数,不能组成a与b个数,问有多少种组合方式

那就是C(n,1)+C(n,2)+....+C(n,n)-C(n,a)-C(n,b)

和式部分为2^n-1

由于a,b的范围在2e5,直接运用逆元+原始定义求两个组合数就行了

#include<bits/stdc++.h>
using namespace std;
#define lowbit(x) ((x)&(-x))
typedef long long LL; const LL MOD = 1e9+7;
void ex_gcd(LL a, LL b, LL& x, LL& y) {
if(!b) {
x = 1, y = 0;
} else {
ex_gcd(b, a%b, y, x);
y -= x * (a / b);
}
} LL inv(LL t, LL p) {
LL x, y, d;
ex_gcd(t, p, x, y);
return (x%p+p)%p;
} LL quick_pow(LL a, LL b, LL p) {
LL ret = 1;
while(b) {
if(b & 1) ret = (ret * a) % p;
a = (a * a) % p;
b >>= 1;
}
return ret;
} void run_case() {
LL n, a, b;
cin >> n >> a >> b;
if(n <= 2) {
cout << "0";
return;
}
LL all = quick_pow(2, n, MOD) - 1;
LL fa = 1, fb = 1;
// get a! and b!
for(LL i = a; i >= 1; --i)
fa = (fa * i) % MOD;
for(LL i = b; i >= 1; --i)
fb = (fb * i) % MOD;
LL n1 = 1, n2 = 1;
// get n*(n-1)---*(n-a+1)
for(LL i = n; i >= n-a+1; --i)
n1 = (n1 * i) % MOD;
for(LL i = n; i >= n-b+1; --i)
n2 = (n2 * i) % MOD;
//get MOD inverse
LL invfa = inv(fa, MOD), invfb = inv(fb, MOD);
all = ((all - n1*invfa%MOD)+MOD)%MOD;
all = ((all - n2*invfb%MOD)+MOD)%MOD;
cout << all;
} int main() {
ios::sync_with_stdio(false), cin.tie(0);
cout.flags(ios::fixed);cout.precision(10);
run_case();
cout.flush();
return 0;
}

ABC156D的更多相关文章

  1. AT5341 [ABC156D] Bouquet 题解

    Content 有一个人有 \(n\) 种不同的话可供选择,TA 可以选择至少一种花做花束,但是 TA 不喜欢花的种数为 \(a\) 或者 \(b\) 的花束.求选花的方案数对 \(10^9+7\) ...

随机推荐

  1. html div四边阴影效果

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or ...

  2. 密码学笔记-一段base64wp

    CTF--练习平台 例题: 一段Base64 flag格式:flag{xxxxxxxxxxxxx} 附件: base64.txt 1.base64解码:http://base64.xpcha.com/ ...

  3. AcWing 900. 整数划分

    #include <iostream> #include <algorithm> using namespace std; , mod = 1e9 + ; int n; int ...

  4. 题解【洛谷P3662】[USACO17FEB]Why Did the Cow Cross the Road II S

    本题是练习前缀和的好题!我们可以枚举前端点,确定一个长度为k的区间,然后利用前缀和统计区间内损坏的灯的数量,最后取最小值即可.AC代码: #include <bits/stdc++.h> ...

  5. LED Decorative Light Manufacturer - LED Neon Rope: 5 Advantages

    In the past 100 years, lighting has come a long way. Nowadays, the decorative LED lighting design ca ...

  6. JavaScript中的 typeof,null,和undefined

    typeof操作符 null 在JavaScript中null表示“什么都没有”. null是一个只有一个值的特殊类型.表示一个空对象引用. typeof null; 返回的是object 可以将nu ...

  7. flutter web 配置环境及运行(windows)

    此下 操作 都是基于 windows  一, 将镜像添加到 用户环境变量中 由于在国内访问Flutter有时可能会受到限制,Flutter官方为中国开发者搭建了临时镜像,大家可以将如下环境变量加入到用 ...

  8. ListVIew中包含水平滑动控件,左右滑动时容易触发上下滑动

    自定义ListView import android.content.Context;import android.util.AttributeSet;import android.view.Moti ...

  9. (BFS)1097: Yuchang and Zixiang ‘s maze

    1097: Yuchang and Zixiang ‘s maze Time Limit: 2 Sec Memory Limit: 128 MBSubmit: 863 Solved: 149   De ...

  10. opencv:边缘提取

    #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace st ...