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 ...
随机推荐
- ubuntu更换源
1.备份源 cd /etc/apt/ sudo cp sources.list sources.list.bak 2.更换阿里源 sudo vim /etc/apt/sources.list 中 ...
- JS-Promise(使异步操作同步执行)
单个异步操作同步 <div id="box"></div> <script> var box = document.querySelector( ...
- java sftp.exec无法执行mv命令
编写java程序过程中,sftp上传下载建目录删除文件都可以,就是备份不行. 分析原因如下: 1.如果用的同一个用户,即sftp用户来通过 exec(ssh连接) 执行mv命令,那极有可能是在搭建sf ...
- jmeter之关联的使用(正则、json)
部分接口的测试中,一个接口会依赖上一个接口的响应信息,但上一个接口的响应信息又不是固定不变的,这时候,需要提取上一个接口的响应信息,将二者每一次的信息关联起来 目录 1.应用场景 2.jmeter正则 ...
- Entity Framework Code First (五)Fluent API - 配置关系 转载 https://www.cnblogs.com/panchunting/p/entity-framework-code-first-fluent-api-configuring-relationships.html
上一篇文章我们讲解了如何用 Fluent API 来配置/映射属性和类型,本文将把重点放在其是如何配置关系的. 文中所使用代码如下 public class Student { public int ...
- Docker安装Web前端性能测试工具Sitespeed.io
一.Sitespeed.io概述 1.Sitespeed.io简介 Sitespeed.io:是一款开源的Web性能测试工具,用来衡量Web网站的综合性能,帮助开发和测试人员分析网页的加载速度和渲染性 ...
- MySQL 查询语句--------------进阶9:联合查询
#进阶9:联合查询 /* union 联合 合并:将多条查询语句的结果合并成一个结果 语法: 查询语句1 union 查询语句2 union..... 应用场景:要查询的结果来自于多个表,且多个表没有 ...
- 1、Laravel 环境配置及安装
一.开发工具及环境 PHPStorm + phpStudy 最新版 Composer 安装 https://www.phpcomposer.com/ 下载就可以,设置中国镜像 安装完成后 compos ...
- C# 身份证号码验证正则和验证函数
做身份证验证的时候要求能够按照标准18位身份证验证,普通正则表达式不能满足需求,所以在网上找到了这个函数,很好用,虽然还是有漏洞,不过一般乱填的号码都能被屏蔽掉 身份证验证函数(标准18位验证) pr ...
- java调用数据库中的函数和存储过程
1.调用函数 {?= call <procedure-name>[(<arg1>,<arg2>, ...)]} {call <procedure-name&g ...