ZZ1061. [ABC110D] Factorization

image

 

#include<bits/stdc++.h>
using namespace std;
int n,m,s,l;
#define f(i,j,k) for(register int i=j;i<=k;++i)
#define g(i,j,k) for(register int i=j;i>=k;--i)
const int mo=1e9+7;
int ksm(int x,int p){
    if(p==0)return 1;
    int num=ksm(x,p/2);
    num=1ll*num*num%mo;
    if(p&1)num=1ll*num*x%mo;
    return num;
}
int C(int n,int m){
    if(n<m)return 0;
    int a=1,b=1;
    f(i,n-m+1,n)a=1ll*a*i%mo;
    f(i,1,m)b=1ll*b*i%mo;
    return 1ll*a*ksm(b,mo-2)%mo;
}
int a[30];
int main(){
    cin>>n>>m;
    for(register int i=2;i*i<=m;++i){
        for(l=0;m%i==0;m/=i)++l;
        if(l)a[++s]=l;
    }
    if(m!=1)a[++s]=1;
    l=1;
    f(i,1,s)l=1ll*l*C(n+a[i]-1,n-1)%mo;
    printf("%d\n",l);
    return 0;
}

  

posted @ 2025-12-05 17:42  我微笑不代表我快乐  阅读(2)  评论(0)    收藏  举报