Codeforces 803F Coprime Subsequences DP+GCD
来源:互联网 发布:淘宝网络营销 编辑:程序博客网 时间:2024/06/06 03:29
点击打开链接
题意:n个数a[i],问有多少个子序列的gcd为1? (子序列下标不同就算不同) n,a[i]<=1e5
令dp[i]:gcd为i的子序列个数
i的倍数的子序列有2^c[i]-1个,这些子序列的gcd可能为(i,2i,3i...)
则gcd为i的子序列个数:dp[i]=2^(c[i])-dp[2i]-dp[3i]...
#include <bits/stdc++.h>using namespace std;typedef long long ll;const ll mod=1e9+7;const int N=2e5+20;const int M=1e5;ll cnt[N],c[N];//c[i] i的倍数的个数 ll dp[N];//dp[i]:gcd为i的子序列个数 int n;ll pw2[N]; int main(){ while(cin>>n){memset(dp,0,sizeof(dp));memset(cnt,0,sizeof(cnt));int x;pw2[0]=1;for(int i=1;i<=n;i++){scanf("%I64d",&x);cnt[x]++;pw2[i]=(2ll*pw2[i-1])%mod;}for(int i=M;i>=1;i--){ll tot=0;for(int k=i;k<=M;k+=i)tot+=cnt[k];//tot:i的倍数个数 dp[i]=pw2[tot]-1;for(int k=i+i;k<=M;k+=i)dp[i]=(dp[i]-dp[k]+mod)%mod;}cout<<dp[1]<<endl;}return 0;}
阅读全文
0 0
- Codeforces 803F Coprime Subsequences DP+GCD
- Codeforces-803F-Coprime Subsequences(筛)
- codeforces 803F Coprime Subsequences (容斥原理)
- Educational Codeforces Round 20 F. Coprime Subsequences(容斥)
- cf Educational Codeforces Round 20 F. Coprime Subsequences
- CF 803 F Coprime Subsequences (容斥原理)
- Educational Codeforces Round 20 F. Coprime Subsequences(莫比乌斯反演)
- CF 803 F. Coprime Subsequences(数论题,莫比乌斯,容斥原理)
- Codeforces803F Coprime Subsequences
- 【Codeforces 500F】Dp
- 【Codeforces 597C】 Subsequences - DP 主席树
- Codeforces 597C Subsequences dp + 树状数组
- Subsequences CodeForces - 597C 树状数组 + dp
- codeforces 474F 区间gcd + 离散化
- codeforces 234F Fence (dp)
- codeforces 567F mausoleum dp
- Codeforces 234F (dp)
- 树形dp-CodeForces 581F
- hadoop学习总结
- (2)高通AP10.4开发者指南——WLAN(1.2 WLAN软件架构)
- 南阳理工ACM 5Binary String Matching
- audioTrack调用的简单流程图
- 用Phaser来制作一个html5游戏——flappy bird (二)
- Codeforces 803F Coprime Subsequences DP+GCD
- Spring异步发送http请求
- 关于linux扩容问题解决方法
- UESTC 1592 An easy problem B 线段树区间合并
- 逆波兰式的实现(Java)
- PHP设计模式——概述
- base64编码+号解码错误
- Spring中BeanPostProcessor
- javaMail学习(与spring集成)