Educational Codeforces Round 33 (Rated for Div. 2) E. Counting Arrays(组合数学)

来源:互联网 发布:淘宝网狗狗 编辑:程序博客网 时间:2024/05/17 06:53

原题链接:http://codeforces.com/contest/893/problem/E


首先质因子分解,然后问题就转化为了n种不同颜色的球,每个球Ai个,放到m个不同的盒子里,可以有空盒子,有多少种方法,然后再考虑正负问题即可,因为每种颜色相互独立,所以,每种颜色单独考虑,最后乘上2^(m-1),因为前m-1个数正负号可以随便选,最后一个数的正负号就确定了。


代码:

#include<bits/stdc++.h>using namespace std;typedef long long ll;const int MAXN=2e6+5;const int MOD=1e9+7;bool vis[MAXN];ll fac[MAXN],inv[MAXN];ll pri[MAXN],fi[MAXN],tot;ll qpow(ll a,ll b){ll ans=1;a%=MOD;    for(ll i=b;i;i>>=1,a=a*a%MOD)        if(i&1)ans=ans*a%MOD;    return ans;}ll C(ll n,ll m){    if(m>n||m<0)return 0;    ll s1=fac[n],s2=inv[n-m]*inv[m]%MOD;    return s1*s2%MOD;//费马小定理求逆元 }void init(){tot=0;    memset(vis,false,sizeof(vis));fac[0]=1;for(ll i=1;i<MAXN;i++)//阶乘打表     fac[i]=fac[i-1]*i%MOD;inv[MAXN-1]=qpow(fac[MAXN-1],MOD-2);for(ll i=MAXN-2;i>=0;i--)inv[i]=inv[i+1]*(i+1)%MOD;for(int i=2;i<MAXN;i++)    {        if(!vis[i])        {            pri[tot++]=i;fi[i]=i;        }        for(int j=0;j<tot&&i*pri[j]<MAXN;j++)        {fi[i*pri[j]]=pri[j];            vis[i*pri[j]]=true;            if(i%pri[j]==0)            {                break;            }        }    }}void solve(){int n,m,cnt=0,last=0;ll ans=1;scanf("%d%d",&n,&m);while(n>1){if(fi[n]==last){cnt++;}else{ans=ans*C(cnt+m-1,m-1)%MOD;cnt=1;last=fi[n];}n/=fi[n];}ans=ans*C(cnt+m-1,m-1)%MOD;ans=ans*qpow(2,m-1)%MOD;printf("%lld\n",ans);}int main(){//freopen("in.txt","r",stdin);//freopen("out.txt","w",stdout);init();int q;scanf("%d",&q);while(q--){solve();}return 0;}


阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 洋桔梗有点烂根怎么办 变色球花枯萎了怎么办 桔梗花叶子蔫了怎么办 洋桔梗头垂下来怎么办 洋桔梗花容易折断怎么办 眼睛被火炮炸伤了怎么办 逆水寒包裹满了怎么办 逆水寒包裹里满了怎么办 grim soul包裹满了怎么办 剑三包裹满了怎么办 电脑开机后都是英文怎么办 欠员工工资仲裁老板不到庭怎么办 乔丹拖鞋鞋底硬怎么办 公牛插座电阻烧了怎么办 公牛led灯太刺眼怎么办 公牛插座usb坏了怎么办 墙壁上开关坏了怎么办 刑事二审判决后不服的怎么办 空调外机空间小怎么办 离婚判决生效书丢了怎么办 法院判决离婚对方上诉怎么办 法院判决离婚上诉中级法院怎么办 刑诉中二审发现一审事实错误怎么办 法院判决过了执行期怎么办 刑事犯罪判决后法院未执行怎么办 法院起诉对方不签字怎么办 法院判离婚对方不要签字怎么办 老人不能到法院签字怎么办 法院判决书被告人没签字怎么办? 法院判决离婚一方不签字怎么办 法院判决离婚对方不签字怎么办 法院已判决被告没有钱怎么办 判决还款但是的确没有钱怎么办 强执执行没有钱怎么办 法院判了没钱还怎么办 判决后对方不给钱怎么办 欠钱判决后没钱怎么办 判决了还不给钱怎么办 驾驶证到期本人在监狱服刑怎么办 轻伤过了追诉期怎么办 判决生效书丢了怎么办