Count Subsets
2024-10-21 16:31:18
题意:
给一集合 $S = \{ 1,2, ... , n \} $,取两个S的子集 A和B,使得A不是B的子集,且B不是A的子集。
解法:
1.牛顿展开
我们采用容斥,显然有
$$ans(n) = (2^n - 1)^2 - 2* \sum_{k=1}^n{C_n^k * (2^k - 2)} - (2^n-1)$$
$$ans(n) = (2^n - 1)(2^n-2) - 2*(\sum_{k=1}^n{C_n^k *2^k} - 2*\sum_{k=1}^n{C_n^k})$$
$$ans(n) = 4^n - 2*3^n + 2^n$$
#include <iostream>
#include <cstdio>
#include <cstring>
#include <complex>
#include <cmath>
#include <ctime> using namespace std; #define N 1000010
#define LL long long
#define P 1000000007LL using namespace std; LL power3[N],power2[N]; int main()
{
power3[]=;
power2[]=;
for(int i=;i<N;i++)
{
power3[i] = power3[i-] * 3LL % P;
power2[i] = power2[i-] * 2LL % P;
}
int T,n;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
LL ans = power2[n]*(power2[n]+1LL)%P;
ans = (ans+P-2LL*power3[n]%P)%P;
printf("%I64d\n",ans);
}
return ;
}
2.生成函数(待补)
可以构造出
最新文章
- HTML5权威指南--Web Storage,本地数据库,本地缓存API,Web Sockets API,Geolocation API(简要学习笔记二)
- python直接执行另一个文件中的代码
- js多行省略
- 一条诡异的insert语句
- Enum:EXTENDED LIGHTS OUT(POJ 1222)
- ubuntu系统 刷bios
- Ibatis的类型处理器TypeHandler解析
- 【BZOJ】1901: Zju2112 Dynamic Rankings(区间第k小+树状数组套主席树)
- android里面线程睡眠事件使用方法
- 转:MySQL导入.sql文件及常用命令
- 深入浅出Node.js (2) - 模块机制
- MySql高效分页SQL
- HTML需掌握的基础
- centos安装中文支持(转)
- ASP.NET Core MVC 模型绑定用法及原理
- 【十一】jvm 性能调优工具之 jmap
- Tarjan 模板,高级并查集
- HTML5——Data Url生成
- Spring事务管理详解_基本原理_事务管理方式
- mybatis-mysql类型映射