bzoj4305 数学

来源:互联网 发布:mac imovie 丢失 编辑:程序博客网 时间:2024/05/19 17:56

题目:http://www.lydsy.com/JudgeOnline/problem.php?id=4305
大意:给长度为n的数列a,求有多少种数列b满足:
1、1<=b[i]<=m
2、 gcd(b[1],b[2],…,b[n])=d(d=1,2,3,…,m)
3、[ai≠bi]的个数为k

可以参考popoqqq blog

k个不同可以转为n-k个相同。
用cnt表示数列a中有多少个是d的倍数。
ans[d]=C(cnt,k)(m/d-1)^(cnt-k)(m/d)^(n-cnt)-ans[d*i].
(m/d-1)^(cnt-k)表示cnt中除去相同的可以选的方案
(m/d)^(n-cnt)表示除去cnt剩下的项可以选的个数

#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int mm=int(1e9)+7;int n,m,K,ans[300050],a[300050],cnt;int Pow[300050],Inv[300050];inline int Mod(int x,int y){    x+=y;    if (x>=mm) x-=mm;    return x;}inline int ksm(int x,int y){    long long r=1;    for (;y;y>>=1,x=1ll*x*x%mm)        if (y&1) r=r*x%mm;    return r;}inline int jc(int a,int b){    return 1ll*Pow[a]*Inv[b]%mm*Inv[a-b]%mm;}int main(){    scanf("%d%d%d",&n,&m,&K);   K=n-K;    int x;    for (int i=1;i<=n;++i) {        scanf("%d",&x);        ++a[x];    }    Pow[0]=1;    for (int i=1;i<=n;++i) Pow[i]=1ll*Pow[i-1]*i%mm;    Inv[n]=ksm(Pow[n],mm-2);    for (int i=n-1;i>=0;--i) Inv[i]=1ll*Inv[i+1]*(i+1)%mm;    for (int i=m;i;--i) {        cnt=0;        for (int j=1;1ll*i*j<=m;++j)            cnt+=a[i*j];        if (cnt<K) continue;        ans[i]=1ll*jc(cnt,K)*ksm(m/i-1,cnt-K)%mm*ksm(m/i,n-cnt)%mm;    }    for (int i=m;i;--i)        for (int j=i+i;j<=m;j+=i) ans[i]=Mod(ans[i],mm-ans[j]);    for (int i=1;i<m;++i) printf("%d ",ans[i]);    printf("%d\n",ans[m]);} 
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 纯甄过期一个月怎么办 四个月宝宝不吃奶瓶怎么办 四个月宝宝不吃奶粉怎么办 婴儿三四天不大便怎么办 婴儿几天不拉大便怎么办 新生儿6天不拉屎怎么办 孩子10天不大便怎么办 宝宝5天没拉屎怎么办 小孩4-5天不大便怎么办 三个月宝宝睡前哭闹厉害怎么办 新生儿抱着睡放下就醒怎么办 宝宝大运动发育迟缓怎么办 八个月宝宝不会爬怎么办 宝宝竖着抱早了怎么办 孕妇吃的水果少怎么办 6个月宝宝厌奶怎么办 5个月宝宝厌奶怎么办 11个月宝宝厌奶怎么办 母乳宝宝不喝奶粉怎么办 换奶粉不拉大便怎么办 宝宝和妈妈不亲怎么办 冬天榨果汁太凉怎么办 四个月宝宝拉水怎么办 婴儿吃奶吃撑了怎么办 1岁的宝宝腹泻怎么办 一岁宝宝老拉肚子怎么办 一岁宝宝拉肚子怎么办啊 小孩发烧怎么办39度要吃消炎药吗 孩子不爱吃水果蔬菜怎么办 一岁宝宝不吃水果怎么办 一岁宝宝不爱吃水果怎么办 1岁多宝宝不吃水果怎么办 中学生不爱与家长交流怎么办 孩子一直37度多怎么办 小孩39度3算高烧怎么办 7岁发烧怎么办如何退烧 7岁反复发烧7天怎么办 一岁发烧39.8度怎么办 反复发烧39度4天怎么办 大人发烧到39度怎么办 小孩高烧39度多怎么办