LINK:数列的GCD

题意:

给出一个长度为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\neq b_i\)(1<=i<=N)

注:gcd(x1,x2,...,xn)为x1, x2, ..., xn的最大公约数。

输出答案对1,000,000,007取模的值。

我没能想出来这道题 感觉有点虚。应该多思考一下的。

有K个位置恰好不相等 n-K个位置恰好相等 设当前处理的gcd为d 那么a序列能和b序列刚好相等的数的个数为M.M为a序列中为d的倍数的个数。

那么有C(M,n-k)的方案 剩下的方案 考虑这M-n+k个位置只有\(\lfloor \frac{M}{d}\rfloor-1\)种可能。

这里注意是排列 不是组合(我傻了想成这里运用隔板法了 剩下的 n-M个位置 就有\(\lfloor \frac{M}{d}\rfloor\)可能。

最后发现 有不合法的情况可以发现不合法的情况为gcd为d的倍数 所以此时把d的倍数的答案都减掉即可。

const int MAXN=300010;
int n,m,k;
int a[MAXN],vis[MAXN];
ll fac[MAXN],inv[MAXN],ans[MAXN];
inline ll ksm(ll b,int p){if(p<0)return 0;ll cnt=1;while(p){if(p&1)cnt=cnt*b%mod;b=b*b%mod;p=p>>1;}return cnt;}
inline ll C(int a,int b){if(a<b)return 0;return fac[a]*inv[b]%mod*inv[a-b]%mod;}
int main()
{
freopen("1.in","r",stdin);
get(n);get(m);get(k);fac[0]=1;k=n-k;
rep(1,n,i)++vis[get(a[i])],fac[i]=fac[i-1]*i%mod;
inv[n]=ksm(fac[n],mod-2);
fep(n-1,0,i)inv[i]=inv[i+1]*(i+1)%mod;
fep(m,1,i)
{
ll cnt=0,sum=vis[i];
for(int j=2;j*i<=m;++j)cnt=(cnt+ans[j*i])%mod,sum+=vis[i*j];
ans[i]=C(sum,k)*ksm(m/i-1,sum-k)%mod*ksm(m/i,n-sum)%mod;
ans[i]=(ans[i]-cnt+mod)%mod;
}
rep(1,m,i)printf("%lld ",ans[i]);
return 0;
}

bzoj 4305 数列的GCD的更多相关文章

  1. BZOJ 4305: 数列的GCD( 数论 )

    对于d, 记{ai}中是d的倍数的数的个数为c, 那么有: 直接计算即可,复杂度O(NlogN+MlogM) --------------------------------------------- ...

  2. 【BZOJ 4305】 4305: 数列的GCD (数论)

    4305: 数列的GCD Description 给出一个长度为N的数列{a[n]},1<=a[i]<=M(1<=i<=N).  现在问题是,对于1到M的每个整数d,有多少个不 ...

  3. 【莫比乌斯反演】关于Mobius反演与gcd的一些关系与问题简化(bzoj 2301 Problem b&&bzoj 2820 YY的GCD&&BZOJ 3529 数表)

    首先我们来看一道题  BZOJ 2301 Problem b Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd( ...

  4. bzoj 4303 数列

    bzoj 4303 数列 二维 \(KD-Tree\) 模板题. \(KD-Tree\) 虽然在更新和查询的方式上类似于线段树,但其本身定义是类似于用 \(splay/fhq\ treap\) 维护区 ...

  5. [BZOJ 2989]数列(二进制分组+主席树)

    [BZOJ 2989]数列(二进制分组+主席树) 题面 给定一个长度为n的正整数数列a[i]. 定义2个位置的graze值为两者位置差与数值差的和,即graze(x,y)=|x-y|+|a[x]-a[ ...

  6. [BZOJ 2820] YY的gcd(莫比乌斯反演+数论分块)

    [BZOJ 2820] YY的gcd(莫比乌斯反演+数论分块) 题面 给定N, M,求\(1\leq x\leq N, 1\leq y\leq M\)且gcd(x, y)为质数的(x, y)有多少对. ...

  7. [BZOJ 2989]数列(CDQ 分治+曼哈顿距离与切比雪夫距离的转化)

    [BZOJ 2989]数列(CDQ 分治) 题面 给定一个长度为n的正整数数列a[i]. 定义2个位置的graze值为两者位置差与数值差的和,即graze(x,y)=|x-y|+|a[x]-a[y]| ...

  8. BZOJ.4052.[Cerc2013]Magical GCD(思路)

    BZOJ \(Description\) 给定\(n\)个数的序列\(a_i\).求所有连续子序列中,序列长度 × 该序列中所有数的gcd 的最大值. \(n\leq10^5,\ a_i\leq10^ ...

  9. bzoj 2820 YY的GCD - 莫比乌斯反演 - 线性筛

    Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对kAc这种 傻×必 ...

随机推荐

  1. OldTrafford after 102 days

    THE RED GO MARCHING ON   One Team One Love Through the highs and the lows   One hundred and two long ...

  2. zabbix fping 监控网络质量

    1,zabbix server (proxy)安装fping wget http://www.fping.org/dist/fping-3.16.tar.gz tar zxvf fping-3.16. ...

  3. JAVA基础笔记10-11-12-13-14

    十.今日内容介绍 1.继承 2.抽象类 3.综合案例---员工类系列定义 01继承的概述 *A:继承的概念 *a:继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系 *b:在J ...

  4. ASP.NET CORE MVC用时分析工具MiniProfiler

    ASP.NET CORE MVC用时分析工具MiniProfiler MiniProfiler(https://miniprofiler.com/)是一个轻量级且简单易用的分析工具库,它可以用来分析A ...

  5. Spring-Validation(数据校验) 你值得拥有

    前言 最近看到很多童鞋在项目中的对请求参数的校验都用的if来判断各参数的属性,如: if(StringUtils.isBlank(username)){ return RR.exception(&qu ...

  6. day16 三层装饰器和迭代器

    一. 经典的两层装饰器,也是标准装饰器 案例 import time def outter1(func): def wrapper(*args, **kwargs): start = time.tim ...

  7. JVM 专题六:运行时数据区(一)概述

    1. 运行时数据区架构图 2. 内存 内存是非常重要的系统资源,是硬盘和cpu的中间仓库及桥梁,承载着操作系统和应用程序的实时运行.JVM内存布局规定了JAVA在运行过程中内存申请.分配.管理的策略, ...

  8. linux专题(一):小白的开始以及相关的学习链接

    转载自:https://www.cnblogs.com/ggjucheng/archive/2011/12/16/2290158.html 学习Linux也有一阵子了,这过程中磕磕撞撞的,遇到了问题, ...

  9. 李航统计学习方法(第二版)(五):k 近邻算法简介

    1 简介 k近邻法的输入为实例的特征向量,对应于特征空间的点;输出为实例的类别,可以取多类.k近邻法假设给定一个训练数据集,其中的实例类别已定.分类时,对新的实例,根据其k个最近邻的训练实例的类别,通 ...

  10. 数据可视化之分析篇(六)使用Power BI进行流失客户分析

    https://zhuanlan.zhihu.com/p/73358029 为了提升销量,在不断吸引新客户的同时,还要防止老客户离你而去,但每一个顾客不可能永远是你的客户,不可避免的都会经历新客户.活 ...