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;
}

最新文章

  1. JFinalConfig配置
  2. poj 3253 Fence Repair
  3. 新学C++的for,switch和随机数
  4. #define x do{......} while(0)的用处
  5. Android游戏开发之主角的移动与地图的平滑滚动
  6. MySQL join buffer使用
  7. sulime-text 3 安装以及使用
  8. 鼠标移入 移出div div会消失的处理
  9. Linux内存详解
  10. 2017年 JavaScript 框架回顾 -- 后端框架
  11. Java实现大批量数据导入导出(100W以上) -(一)导入
  12. 【python 字符串】 字符串的相关方法(一)
  13. Pycharm配置
  14. python + selenium 模块封装及参数化
  15. java三大特性--继承
  16. HTML5 WebSocket 权威指南 学习一 (第二章 WebSocket API)
  17. 用javaScript将页面滚动条到底部
  18. 前端常用功能记录(二)—datatables表格
  19. [BZOJ4129]Haruna’s Breakfast(树上带修改莫队)
  20. 使用“mvn site-deploy”部署站点(WebDAV例子)

热门文章

  1. 从0开始,手把手教你用Vue开发一个答题App01之项目创建及答题设置页面开发
  2. C++快速读写
  3. JVM 专题十三:运行时数据区(八)直接内存
  4. python 面向对象专题(一):面向对象初识、面向对象结构、类、self、实例化对象
  5. How to install chinese input method
  6. Python Ethical Hacking - MAC Address &amp; How to Change(1)
  7. P1433 吃奶酪(洛谷)状压dp解法
  8. 简单实用的办公软件导航网站,IT经理必备工具
  9. 《Python测试开发技术栈—巴哥职场进化记》—前言
  10. 题解 洛谷 P5443 【[APIO2019]桥梁】