Hdu-6053 TrickGCD(莫比乌斯函数)
来源:互联网 发布:大数据修炼系统txt 编辑:程序博客网 时间:2024/06/04 19:26
You are given an array
*
* For each pair( l , r ) (
You can assume that
分析:限制等价于gcd(1,n) >= 2,那么我们考虑分别计算gcd是2的倍数,gcd是3的倍数...gcd是k的倍数..然后相加,这样当然会有重复,所以我们只要在系数上乘上一个莫比乌斯函数就可以了,但是这样暴力枚举gcd后还要计算ai/k,还是n^2的,我们注意到n/k的取值随着k增大而减小,而且sum(n/k)是n*logn级别的,所以我们考虑直接枚举ai/k的解,然后事先对所有ai的值求一个前缀和,这样直接枚举ai/k的解j就可以了.
#include <bits/stdc++.h>#define N 100005#define INF 1000000007#define MOD 1000000007using namespace std;typedef long long ll;bool vis[N];int t,prime[N],cnt,n,Time,mu[N],a[N],f[N];ll ans;void init_mu(){ memset(vis,0,sizeof(vis)); mu[1] = 1; cnt = 0; for(int i = 2;i < N;i++) { if(!vis[i]) { prime[cnt++] = i; mu[i] = -1; } for(int j = 0;j < cnt && i*prime[j] < N;j++) { vis[i*prime[j]] = 1; if(i % prime[j]) mu[i*prime[j]] = -mu[i]; else { mu[i*prime[j]] = 0; break; } } }}ll ksm(ll x,ll y){ ll ans = 1; while(y) { if(y & 1) ans = ans * x % MOD; x = x * x % MOD; y >>= 1; } return ans;}int main(){ init_mu(); scanf("%d",&t); while(t--) { ans = 0; memset(f,0,sizeof(f)); scanf("%d",&n); int Min = INF; for(int i = 1;i <= n;i++) { scanf("%d",&a[i]); Min = min(a[i],Min); f[a[i]]++; } for(int i = 1;i < N;i++) f[i] += f[i-1]; for(int i = 2;i <= Min;i++) { ll temp = 1; for(int j = i;j < N;j += i) temp = temp * ksm(j/i,f[min(j+i-1,N-1)] - f[j-1]) % MOD; ans = (ans + temp*mu[i]*-1 + MOD) % MOD; } cout<<"Case #"<<++Time<<": "<<ans<<endl; }}
阅读全文
0 0
- hdu 6053 TrickGCD [莫比乌斯函数]
- Hdu-6053 TrickGCD(莫比乌斯函数)
- HDU 6053 TrickGCD (莫比乌斯函数)
- HDU 6053 TrickGCD(莫比乌斯函数)
- hdu 6053 TrickGCD 容斥 莫比乌斯
- HDU 6053 TrickGCD(莫比乌斯反演+分块)
- HDU 6053 TrickGCD 莫比乌斯反演||筛法
- 【HDU 6053 TrickGCD】 + 莫比乌斯反演
- hdu 6053 TrickGCD 【容斥&筛法|莫比乌斯】
- HDU 6053 TrickGCD(莫比乌斯反演)
- 【数论-莫比乌斯】hdu 6053 TrickGCD
- hdu 6053 TrickGCD(莫比乌斯反演)
- HDU 6053 TrickGCD(莫比乌斯反演+前缀和)
- HDU 6053 TrickGCD(莫比乌斯反演)
- hdu 6053 TrickGCD 筛法+莫比乌斯函数+分块处理
- hdu 6053 TrickGCD(容斥,分段,莫比乌斯函数)
- HDU 6053 TrickGCD (莫比乌斯函数+分块筛)
- HDU-6053 TrickGCD 前缀和数组,莫比乌斯函数
- 单例
- 递归经典算法 汉诺塔问题
- ceil函数
- 实体类和JSON对象之间相互转化
- linux C总结篇(线程)上
- Hdu-6053 TrickGCD(莫比乌斯函数)
- 数据结构单链表的相关操作(linux下实现)C语言
- 机器视觉系统不同检测场景的光源选择技巧
- 摄影小技巧
- 2.css基础知识
- Hibernate笔记
- html css知识大全
- Struts 注解配置例子及redirect,redirectAction,chain的区别
- 浏览器标准模式和怪异模式之间的区别是什么?