
codeforces803F 2100分容斥原理 + 莫比乌斯函数
发布日期:2021-05-06 15:23:12
浏览次数:13
分类:技术文章
本文共 1460 字,大约阅读时间需要 4 分钟。
题意:
给你 个数的序列
,问你
的子序列方案数。
数据范围: 。
题解:
的质因子个数是奇数个,且没有相同的质因子。
的质因子个数是偶数个,且没有相同的质因子。
表示序列中
的倍数的个数。
表示
个数形成的非空集合的个数。
这就是莫比乌斯函数。
感受:
关键是分析本质不同的质因子。
代码:
#includeusing namespace std;typedef long long ll ;const int maxn = 1e5 + 5 ;const ll mod = 1e9 + 7 ;int n , cnt[maxn] , num[maxn] ;bool vis[maxn] ;int prime[maxn] ;int mu[maxn] ;void get_mu(){ int up = 1e5 ; int cnt = 0 ; mu[1] = 1 ; for(int i = 2 ; i <= up ; i ++) { if(!vis[i]) prime[++ cnt] = i , mu[i] = -1 ; for(int j = 1 ; j <= cnt && prime[j] * i <= up ; j ++) { vis[prime[j] * i] = 1 ; if(i % prime[j] == 0) break ; else mu[i * prime[j]] = -mu[i] ; } }}void init(){ int up = 1e5 ; num[1] = n ; for(int i = 2 ; i <= up ; i ++) for(int j = i ; j <= up ; j += i) num[i] += cnt[j] ;}ll qpow(ll a , ll b){ ll ans = 1 ; a %= mod ; while(b) { if(b & 1) ans = (ans * a) % mod ; b >>= 1 , a = (a * a) % mod ; } return ans % mod ;}ll cal(int x){ ll ans = 0 ; ans = qpow(2ll , ll(x)) ; ans = (ans - 1 + mod) % mod ; return ans ;}void solve(){ int up = 1e5 ; ll ans = cal(num[1]) ; for(int i = 2 ; i <= 1e5 ; i ++) { ans += ll(mu[i]) * cal(num[i]) ; ans %= mod ; } ans = (ans + mod) % mod ; printf("%lld\n" , ans) ;}int main(){ scanf("%d" , &n) ; memset(cnt , 0 , sizeof(cnt)) ; memset(num , 0 , sizeof(num)) ; for(int i = 1 ; i <= n ; i ++) { int x ; scanf("%d" , &x) ; cnt[x] ++ ; } get_mu() ; init() ; solve() ; return 0 ;}
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年03月24日 17时39分24秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
fragment中recyclerview的重新加载问题
2019-03-03
window程序设计(1):第一个windows程序
2019-03-03
windows程序设计(4):文本输出
2019-03-03
JZOJ7月29日提高组反思
2019-03-03
21.2.3总结
2019-03-03
线性代数和数学期望杂题
2019-03-03
21.2.4总结
2019-03-03
【SSL_P2876】2017年东莞市信息学特长生测试题 工程
2019-03-03
【洛谷_P1433】吃奶酪
2019-03-03
【SSL_2020.10.28】区间和的和
2019-03-03
【学习笔记】NumPy数据存取与函数
2019-03-03
ssm项目学习8-bootstrap遇到的错误整理篇
2019-03-03
vector构建邻接表和原始邻接表
2019-03-03
UNITTEST测试框架的使用
2019-03-03
区块链公链如何才能快起来
2019-03-03
linus下centos7防火墙设置
2019-03-03
Base理论介绍
2019-03-03
volatile关键字和AtomicInteger
2019-03-03