HDU 5656 CA Loves GCD 枚举GCD+容斥
来源:互联网 发布:vb 字符串 校验码 编辑:程序博客网 时间:2024/05/18 23:28
题意:给你一个数目为n的集合,求这个集合所有非空子集的最大公约数。
思路:题目给的数据范围为1到1000,那么这个集合的非空子集的最大公约数必然不超过1000,并且也不超过这个集合的最大值。
那么从最大值枚举到1,然后进行容斥即可。
AC代码:
#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=1010;ll power[maxn],cnt[maxn],f[maxn];const ll mod=1e8+7;int main(int argc, char const *argv[]){power[0]=1;for(int i=1;i<maxn;i++){power[i]=(power[i-1]*2)%mod;}cin.sync_with_stdio(false);int T;cin>>T;while(T--){int n,Max=0;cin>>n;memset(cnt,0,sizeof(cnt));memset(f,0,sizeof(f));for(int i=0,x;i<n;i++){cin>>x;cnt[x]++;Max=max(Max,x);}ll ans=0;for(int i=Max;i>=1;i--){int t=0;for(int j=i;j<=Max;j+=i){t+=cnt[j];}if(t){f[i]=(power[t]-1+mod)%mod;for(int j=i+i;j<maxn;j+=i){f[i]=(f[i]-f[j]+mod)%mod;}ans=(ans+1LL*i*f[i]%mod+mod)%mod;}}cout<<ans<<endl;}return 0;}
阅读全文
0 0
- HDU 5656 CA Loves GCD 枚举GCD+容斥
- HDU 5656:CA Loves GCD
- HDU 5656 CA Loves GCD
- HDU 5656 CA Loves GCD
- hdu 5656 CA Loves GCD
- HDU 5656 CA Loves GCD
- HDU 5656 CA Loves GCD
- HDU 5656 CA Loves GCD
- HDU - CA Loves GCD
- HDU 5656 CA Loves GCD (dp)
- hdu CA Loves GCD dp
- HDU 5656 CA Loves GCD 01背包+gcd
- 【HDU5656】CA Loves GCD,容斥思想与乱搞
- HDU 5656 CA Loves GCD (BestCoder Round #78) DP
- hdu 5656 CA Loves GCD(穷举子集类dp)
- HDU 5656 CA Loves GCD dp,常数优化
- HDU 1695 GCD 容斥+约数枚举
- hdu5656 CA Loves GCD
- 如何使用Dokerfile构建镜像及搭建服务
- 决策树的优缺点
- MFC打开文件夹对话框初始化打开路径
- PHP 将dataurl转成图片image方法总结
- 多线程实现线程同步——互次对
- HDU 5656 CA Loves GCD 枚举GCD+容斥
- hdu2049不容易系列之(4)——考新郎
- HDU 6096 String(字典树)
- nodejs特性
- 从源码看ANDROID中SQLITE是怎么通过CURSORWINDOW读DB的
- 回文串判断
- QT中对QTreeView控件节点进行重命名操作
- [bzoj1005][prufer][HNOI2008]明明的烦恼
- popwindow实现listview对应删除