HDU6053 前缀和+容斥
来源:互联网 发布:淘宝官方电话人工服务 编辑:程序博客网 时间:2024/06/14 18:07
#include<cstdio>#include<iostream>#include<cstring>#include<string>#include<algorithm>using namespace std;typedef long long ll;const int MAXN=2e5+10;const ll mod=1e9+7;ll dp[MAXN];ll cnt[MAXN],a[MAXN],n;//cnt[MAXN]1到i的a[i]的个数 ll fsm(ll x,ll n){ll s=1;while(n){if(n&1)s=(s*x)%mod;n>>=1;x=(x*x)%mod;}return s%mod;}int main(){int t;int cas=1;ll ans;ll res;scanf("%d",&t);while(t--){memset(dp,0,sizeof(dp));memset(cnt,0,sizeof(cnt));ll mxn=0;scanf("%d",&n);for(int i=0;i<n;i++){scanf("%lld",&a[i]);mxn=max(mxn,a[i]);cnt[a[i]]++;}for(int i=1;i<=mxn;i++)cnt[i]+=cnt[i-1];ans=0;for(int i=mxn;i>=2;i--){res=1;if(cnt[i-1]){dp[i]=0;continue;}for(int j=i;j<=mxn;j+=i){ll num=cnt[min(mxn,(ll)j+i-1)]-cnt[j-1];ll x=j/i;res=(res*fsm(x,num))%mod;} dp[i]=res;}for(int i=mxn;i>=2;i--){for(int j=i+i;j<=mxn;j+=i){dp[i]=(dp[i]-dp[j]+mod)%mod;}ans=(ans+dp[i])%mod;} printf("Case #%d: %lld\n",cas,ans); cas++;}return 0;}
阅读全文
0 0
- HDU6053 前缀和+容斥
- HDU6053 TrickGCD(容斥原理)
- HDU6053-TrickGCD 容斥原理+莫比乌斯反演
- HDU6053(莫比乌斯函数+容斥定理)
- hdu6053 TrickGCD 莫比乌斯函数 容斥原理
- hdu6053-容斥+莫比乌斯函数+优化
- 611C. New Year and Domino【二维前缀和】【容斥】
- 玲珑oj 1032 (容斥原理或前缀和优化dp)
- 【高维前缀和+容斥】Codeforces449D[Jzzhu and Numbers]题解
- hdu 5468 Puzzled Elena(前缀性质+dfs序+容斥)
- 牛客练习赛 8 (1~n约数和)(前缀和好题)(加边得连通图)(容斥原理)
- 前缀和
- 前缀和
- 前缀和
- 前缀和
- 前缀和
- 2301: [HAOI2011]Problem b 莫比乌斯反演+前缀+容斥原理
- HDU6053-TrickGCD
- 猜数字
- 【git】常用命令汇总
- POJ-1258-Agri-Net
- 209. Minimum Size Subarray Sum
- object-fit
- HDU6053 前缀和+容斥
- 数据库笔记
- ACSII码排序
- java+discuz部署和通信问题总结
- Case:接口实现类的方法上使用AspectJ方式实现aop的异常问题
- 回形取数
- POJ 2226 Muddy Fields 二分图巧妙建图 + 二分图最大匹配
- opencv之Threshold()与AdaptiveThreshold()函数
- 优化MySQL数据库的方法