• codeforces396A


    sol:很显然就是找出所有质因数,然后分别塞进去就行了,怎么塞就是组合数。感觉就是道小学奥数题

    #include <bits/stdc++.h>
    using namespace std;
    typedef int ll;
    inline ll read()
    {
        ll s=0; bool f=0; char ch=' ';
        while(!isdigit(ch))    {f|=(ch=='-'); ch=getchar();}
        while(isdigit(ch)) {s=(s<<3)+(s<<1)+(ch^48); ch=getchar();}
        return (f)?(-s):(s);
    }
    #define R(x) x=read()
    inline void write(ll x)
    {
        if(x<0) {putchar('-'); x=-x;}
        if(x<10) {putchar(x+'0'); return;}
        write(x/10); putchar((x%10)+'0');
    }
    #define W(x) write(x),putchar(' ')
    #define Wl(x) write(x),putchar('
    ')
    const int Mod=1000000007;
    int n;
    map<int,int>Map;
    int num[1000005],cnt[1000005];
    int fac[15505],invf[15505];
    inline int ksm(int x,int y)
    {
        int ans=1;
        while(y)
        {
            if(y&1) ans=1LL*ans*x%Mod;
            x=1LL*x*x%Mod;
            y>>=1;
        }return ans;
    }
    inline int C(int n,int m)
    {
        int oo;
        oo=1LL*fac[n]*invf[m]%Mod*invf[n-m]%Mod;
        return oo;
    }
    int main()
    {
        freopen("codeforces396A_data.in","r",stdin);
        int i,j,k,x;
        R(n);
        fac[0]=invf[0]=1;
        for(i=1;i<=15500;i++) fac[i]=1LL*fac[i-1]*i%Mod;
        invf[15500]=ksm(fac[15500],Mod-2);
        for(i=15499;i>=1;i--) invf[i]=1LL*invf[i+1]*(i+1)%Mod;
        for(i=1;i<=n;i++)
        {
            R(x);
            for(j=2;j<=sqrt(x);j++) if(x%j==0)
            {
                int oo=0;
                while(x%j==0) {x/=j; oo++;}
                if(!Map[j])
                {
                    Map[j]=++(*num); num[*num]=j; cnt[*num]=oo;
                }else cnt[Map[j]]+=oo;
            }
            if(x>1)
            {
                if(!Map[x])
                {
                    Map[x]=++(*num); num[*num]=x; cnt[*num]=1;
                }else cnt[Map[x]]++;
            }
        }
        int ans=1;
        for(i=1;i<=*num;i++)
        {
            ans=1LL*ans*C(cnt[i]+n-1,n-1)%Mod;
        }Wl(ans);
        return 0;
    }
    View Code
  • 相关阅读:
    Oracle- 表的自增长创建
    C#- 写Windows服务
    基于redis分布式缓存实现(新浪微博案例)
    分布式集群系统下的高可用session解决方案
    Hibernate 缓存介绍
    MongoDB 安装(Window/Linux)
    MongoDB 优点
    MongoDB 介绍
    浅析数据一致性
    mysql常用函数汇总
  • 原文地址:https://www.cnblogs.com/gaojunonly1/p/11318108.html
Copyright © 2020-2023  润新知