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 ...
随机推荐
- delphi 按钮 2 行
http://bbs.csdn.net/topics/390230792 回复于: 2015-06-01 21:11:02 最简单的办法:------------------------以下是转载的, ...
- JavaScript高级程序设计(第3版) 第四章(变量、作用域和内存问题)
4.1 基本类型和引用类型的值 1.基本类型的值是(简单的数据段),引用类型的值是(保存在内存中的对象). 基本类型的值在内存中占据固定大小的空间,因此被保存在栈中.(lifo ...
- SAP选择屏幕开发(一)(转)
原文链接:https://blog.csdn.net/wtxhai/article/details/90632686 用户通过屏幕操作来实现与SAP的数据交互,而SAP的屏幕开发一般分为两种,一种是通 ...
- ubuntu18.04 安装 jdk
1.当前路径(如果不想下载到当前路径,可以先cd到指定路径,再开始下载),官网下载JDK文件jdk-8u121-linux-x64.tar.gz $ wget https://download.ora ...
- vue 数组中嵌套的对象添加新属性--页面更新
vue 数组中嵌套的对象添加新属性--页面更新:https://www.jianshu.com/p/8f0e5bb13735
- docker pull理解误区
docker run 命令 如果local image中有对应 镜像+tag 不会从新拉取镜像 docker pull 会进行拉取 先进行镜像更改 [root@master01 ~]# docker ...
- 13、numpy——算术函数
NumPy 算术函数 1.NumPy 算术函数包含简单的加减乘除: add(),subtract(),multiply() 和 divide(). 需要注意的是数组必须具有相同的形状或符合数组广播规则 ...
- Redis设计与实现 -- 链表与字典
1. 链表 1.1 链表的结构 在 Redis 中,链表的实现是双向链表,除此之外与常规的链表不同的是它还有三个函数指针,dup 函数用于复制链表节点所保存的值,free 函数用于释放链表节点保存的值 ...
- JavaScript—— 案例:表单验证
QQ号:<input type="text" id="txtQQ"><span></span><br> 邮箱:& ...
- elasticsearch 基础 —— 处理冲突及乐观并发控制
处理冲突 当我们使用 index API 更新文档 ,可以一次性读取原始文档,做我们的修改,然后重新索引 整个文档 . 最近的索引请求将获胜:无论最后哪一个文档被索引,都将被唯一存储在 Elastic ...