HDU 6053 TrickGCD —— 2017 Multi-University Training 2
TrickGCD
Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)
Total Submission(s): 2523 Accepted Submission(s): 965
* 1≤Bi≤Ai
* For each pair( l , r ) (1≤l≤r≤n) , gcd(bl,bl+1...br)≥2
Each test case begins with an integer number n describe the size of array A.
Then a line contains n numbers describe each element of A
You can assume that 1≤n,Ai≤1e5
4
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
typedef long long LL;
const int MAXN=1e5+;
const int MOD=1e9+;
LL miu[MAXN],primes[MAXN],tot=;
bool isprime[MAXN];
int a[MAXN],sum[MAXN];
int maxx=,minn=MAXN;
void getmiu()
{
memset(isprime, , sizeof((isprime)));
miu[]=;
for(int i=;i<MAXN;i++){
if(isprime[i]==false)
{
miu[i]=-;
primes[++tot]=i;//cout<<'*'<<endl;
}
for(int j=;j<=tot;j++){
if(i*primes[j]>=MAXN) break;
isprime[i*primes[j]]=;
if(i%primes[j]==){
miu[i*primes[j]]=;
break;
}
miu[i*primes[j]]=-miu[i];
}
} for(int i=;i<MAXN;i++) miu[i]=-miu[i];
}
LL quick_pow(LL a, LL p)
{
int res=;
while(p)
{
if(p&) res=a*res%MOD;
a=a*a%MOD;
p>>=;
}
return res;
}
int solve()
{
LL i,j,k,p;
LL ans=;
for(int i=;i<=minn;i++){
if(!miu[i]) continue;
LL res=;
j=min(i, maxx), k=min((i<<)-, maxx);
for(p=; ;p++)
{
if(sum[k]-sum[j-])
res=res*quick_pow(p, sum[k]-sum[j-])%MOD;
if(k==maxx) break;
j+=i;
k+=i;
if(k>maxx) k=maxx;
}
ans+=miu[i]*res;
if(ans>MOD) ans-=MOD;
if(ans<) ans+=MOD;
}
return ans%MOD; }
int main()
{
int T,n,t=;
getmiu();
scanf("%d", &T);
//cout<<'*'<<endl;
while(T--)
{
scanf("%d", &n);
maxx=,minn=MAXN;
memset(sum, , sizeof(sum));
for(int i=;i<n;i++){
scanf("%d", &a[i]);
sum[a[i]]++;
maxx=max(a[i], maxx);
minn=min(a[i], minn);
}
for(int i=;i<=maxx;i++) sum[i]+=sum[i-];
LL res=solve();
printf("Case #%d: %lld\n", ++t, res);
}
}
HDU 6053 TrickGCD —— 2017 Multi-University Training 2的更多相关文章
- HDU 6053 - TrickGCD | 2017 Multi-University Training Contest 2
/* HDU 6053 - TrickGCD [ 莫比乌斯函数,筛法分块 ] | 2017 Multi-University Training Contest 2 题意: 给出数列 A[N],问满足: ...
- hdu 6053: TrickGCD (2017 多校第二场 1009) 【莫比乌斯 容斥原理】
题目链接 定义f[n]表示n是最大公约数情况下的计数,F[n]为n是公约数情况下的计数 (可以和 http://www.cnblogs.com/Just--Do--It/p/7197788.html ...
- 2017 多校2 hdu 6053 TrickGCD
2017 多校2 hdu 6053 TrickGCD 题目: You are given an array \(A\) , and Zhu wants to know there are how ma ...
- HDU 6168 - Numbers | 2017 ZJUT Multi-University Training 9
/* HDU 6168 - Numbers [ 思维 ] | 2017 ZJUT Multi-University Training 9 题意: .... 分析: 全放入multiset 从小到大,慢 ...
- HDU 6053 TrickGCD 莫比乌斯函数/容斥/筛法
题意:给出n个数$a[i]$,每个数可以变成不大于它的数,现问所有数的gcd大于1的方案数.其中$(n,a[i]<=1e5)$ 思路:鉴于a[i]不大,可以想到枚举gcd的值.考虑一个$gcd( ...
- 2017 Multi-University Training Contest - Team 2 &&hdu 6053 TrickGCD
TrickGCD Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total ...
- hdu 6053 TrickGCD 筛法
TrickGCD Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Probl ...
- hdu 6053 TrickGCD(筛法+容斥)
TrickGCD Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total ...
- HDU 6053 ( TrickGCD ) 分块+容斥
TrickGCD Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total ...
随机推荐
- 洛谷P1982 小朋友的数字
题目传送门 这个题的题目有点长,我们先来分析一波. 首先,这个题目中提到了以下几个量 1.最直接的就是每个小盆友手上的数字,这是题目给你的 2.每个小盆友的特征值 题目中给的定义是:每个小朋友的特征值 ...
- SqlServer 高级查询
高级查询在数据库中用得是最频繁的,也是应用最广泛的. Ø 基本常用查询 --select select * from student; --all 查询所有 select all sex from ...
- vue分页练习
<!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...
- 【Unity 系统知识】 Time类
[转载请注明出处] //表示时间总量Time.time:(只读)表示从程序运行的总时间,会随着游戏的暂停而停止计算.Time.unscaledTime:(只读)不考虑timescale对时间修改的总时 ...
- java--反射原理及操作
1.反射原理 反射具体操作 15.反射的原理(********理解********) * 应用在一些通用性比较高的代码 中 * 后面学到的框架,大多数都是使用反射来实现的 * 在框架开发中,都是基于配 ...
- vscode内置c++ define选项
https://stackoverflow.com/questions/46415076/how-can-i-define-macros-for-the-c-intellisense-engine
- [Linux] 014 帮助命令
1. 帮助命令:man 命令名称:man 命令所在路径:/bin/man 执行权限:所有用户 语法:man [命令或配置文件] 功能描述:获得帮助信息 范例: 查看 ls 命令的帮助信息 $ man ...
- 常见样式问题七、word-break、word-wrap、white-space区别
常见样式问题七.word-break.word-wrap.white-space区别:https://blog.csdn.net/c11073138/article/details/79534394 ...
- 用php实现一个简单的爬虫,抓取电影网站的视频下载地址
昨天没什么事,先看一下电影,就用php写了一个爬虫在视频网站上进行视频下载地址的抓取,这里总结一下抓取过程中遇到的问题 1:通过访问浏览器来执行php脚本这种访问方式其实并不适合用来爬网页,因为要受到 ...
- matlab调试技巧
Matlab的调试总体分为,直接调试和间接调试. 1.直接调试: (1)去掉句末的分号: (2)单独调试一个函数:将第一行的函数声明注释掉,并定义输入量,以脚本方式执行 M 文件: (3)适当地方添加 ...