【BZOJ 4305】 4305: 数列的GCD (数论)
4305: 数列的GCD
Description
给出一个长度为N的数列{a[n]},1<=a[i]<=M(1<=i<=N)。现在问题是,对于1到M的每个整数d,有多少个不同的数列b[1], b[2], ..., b[N],满足:(1)1<=b[i]<=M(1<=i<=N);(2)gcd(b[1], b[2], ..., b[N])=d;(3)恰好有K个位置i使得a[i]<>b[i](1<=i<=N)注:gcd(x1,x2,...,xn)为x1, x2, ..., xn的最大公约数。输出答案对1,000,000,007取模的值。Input
第一行包含3个整数,N,M,K。第二行包含N个整数:a[1], a[2], ..., a[N]。Output
输出M个整数到一行,第i个整数为当d=i时满足条件的不同数列{b[n]}的数目mod 1,000,000,007的值。Sample Input
3 3 3
3 3 3Sample Output
7 1 0HINT
当d=1,{b[n]}可以为:(1, 1, 1), (1, 1, 2), (1, 2, 1), (1, 2, 2), (2, 1, 1), (2, 1, 2), (2, 2, 1)。当d=2,{b[n]}可以为:(2, 2, 2)。当d=3,因为{b[n]}必须要有k个数与{a[n]}不同,所以{b[n]}不能为(3, 3, 3),满足条件的一个都没有。对于100%的数据,1<=N,M<=300000, 1<=K<=N, 1<=a[i]<=M。Source

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define Mod 1000000007
#define Maxn 300010
#define LL long long int a[Maxn];
LL p[Maxn],ans[Maxn]; LL qpow(LL a,int b)
{
LL ans=;
while(b)
{
if(b&) ans=(ans*a)%Mod;
a=(a*a)%Mod;
b>>=;
}
return ans;
} LL get_c(int m,int n)
{
LL as=p[n];
as=as*qpow(p[m],Mod-)%Mod;
as=as*qpow(p[n-m],Mod-)%Mod;
return as;
} int cnt[Maxn],cc[Maxn]; int main()
{
int n,m,k;
scanf("%d%d%d",&n,&m,&k);
k=n-k;
memset(cnt,,sizeof(cnt));
memset(cc,,sizeof(cc));
for(int i=;i<=n;i++)
{
scanf("%d",&a[i]);
cc[a[i]]++;
}
for(int i=m;i>=;i--)
{
for(int j=i;j<=m;j+=i) cnt[i]+=cc[j];
}
p[]=;
for(LL i=;i<=n;i++) p[i]=(p[i-]*i)%Mod;
for(int i=m;i>=;i--)
{
if(cnt[i]<k) ans[i]=;
else
{
ans[i]=get_c(k,cnt[i])*qpow(m/i-,cnt[i]-k)%Mod*qpow(m/i,n-cnt[i])%Mod;
for(int j=;j<=m/i;j++) ans[i]=(ans[i]+Mod-ans[i*j])%Mod;
}
}
for(int i=;i<m;i++) printf("%lld ",ans[i]);
printf("%lld\n",ans[m]);
// printf("\n");
return ;
}
2017-03-14 22:14:32
【BZOJ 4305】 4305: 数列的GCD (数论)的更多相关文章
- BZOJ 4305: 数列的GCD( 数论 )
对于d, 记{ai}中是d的倍数的数的个数为c, 那么有: 直接计算即可,复杂度O(NlogN+MlogM) --------------------------------------------- ...
- bzoj 4305 数列的GCD
LINK:数列的GCD 题意: 给出一个长度为N的数列{a[n]},1<=a[i]<=M(1<=i<=N). 现在问题是,对于1到M的每个整数d,有多少个不同的数列b[1], ...
- Bash and a Tough Math Puzzle CodeForces 914D 线段树+gcd数论
Bash and a Tough Math Puzzle CodeForces 914D 线段树+gcd数论 题意 给你一段数,然后小明去猜某一区间内的gcd,这里不一定是准确值,如果在这个区间内改变 ...
- bzoj 2818 GCD 数论 欧拉函数
bzoj[2818]Gcd Description 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. Input 一个整数N Output 如题 Samp ...
- [bzoj]2705: [SDOI2012]Longge的问题[数论][数学][欧拉函数][gcd]
[bzoj]P2705 OR [luogu]P2303 Longge的问题 Description Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题.现在问题来了:给定一个整数N,你需 ...
- BZOJ 2820: YY的GCD | 数论
题目: 题解: http://hzwer.com/6142.html #include<cstdio> #include<algorithm> #define N 100000 ...
- 【BZOJ】2820: YY的GCD(莫比乌斯)
http://www.lydsy.com/JudgeOnline/problem.php?id=2820 此题非常神! 下文中均默认n<m 首先根据bzoj1101的推理,我们易得对于一个数d使 ...
- 【BZOJ】【2818】Gcd
欧拉函数/莫比乌斯函数 嗯……跟2190很像的一道题,在上道题的基础上我们很容易就想到先求出gcd(x,y)==1的组,然后再让x*=prime[i],y*=prime[i]这样它们的最大公约数就是p ...
- 【BZOJ 2820】 YY的GCD (莫比乌斯+分块)
YY的GCD Description 神犇YY虐完数论后给傻×kAc出了一题 给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少 ...
随机推荐
- display:inline-block之用法
HTML的元素有多种display属性,比较常见的有display:none; display:block; display:inline和display:inline-block;等.详细可参阅W3 ...
- IDEA 启动时,报“淇℃伅”的字符
IDEA 启动时,报“淇℃伅”的字符,如下: 解决办法: 修改tomcat安装目录下的config/logging.properties文件,找到java.util.logging.ConsoleHa ...
- 【最大流】【CODEVS】1993 草地排水
[算法]网络流-最大流(dinic) [题解]http://www.cnblogs.com/onioncyc/p/6496532.html #include<cstdio> #includ ...
- 【CodeForces】713 D. Animals and Puzzle 动态规划+二维ST表
[题目]D. Animals and Puzzle [题意]给定n*m的01矩阵,Q次询问某个子矩阵内的最大正方形全1子矩阵边长.n,m<=1000,Q<=10^6. [算法]动态规划DP ...
- 【NOIP】普及组2009 细胞分裂
[算法]数论 [题解]均分的本质是A整除B,A整除B等价于A的质因数是B的子集. 1.将m1分解质因数,即m1=p1^a1*p2^a2*...*pk^ak 所以M=m1^m2=p1^(a1*m2)*p ...
- 通过jquery.validate.js校验表单字段是否合法
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- Django之动态验证码的生成
kind.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- hdu 5319 Painter(杭电多校赛第三场)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5319 Painter Time Limit: 2000/1000 MS (Java/Others) ...
- 蓝色的cms网站后台管理模板——后台
链接:http://pan.baidu.com/s/1c138cwC 密码:9vy9
- tp5 r3 一个简单的SQL语句调试实例
tp5 r3 一个简单的SQL语句调试实例先看效果核心代码 public function index() { if (IS_AJAX && session("uid&quo ...