LC 1735. Count Ways to Make Array With Product

link

class Solution {
public:
    #define LL long long
    const int mod=1E9+7;
    int c[10015][15];
    vector<int> waysToFillArray(vector<vector<int>>& queries) {
        for(int i=1;i<10015;i++){
            c[i][0]=1;
            for(int j=1;j<=min(i,14);j++) {
                if(j==i) c[i][j]=1;
                else c[i][j]=(c[i-1][j]+c[i-1][j-1])%mod;
            }
        }
        vector<int> res;
        for(auto& q:queries){
            int n=q[0];
            int k=q[1];
            int sum=1;
            for(int i=2;i*i<=k;i++){
                if(k%i==0){
                    int cnt=0;
                    while(k%i==0){
                        cnt++;
                        k/=i;
                    }
                    sum=(LL)sum*c[n-1+cnt][cnt]%mod;
                }
            }
            if(k>1){
                sum=(LL)sum*n%mod;
            }
            res.push_back(sum);
        }
        return res;
    }
};
原文地址:https://www.cnblogs.com/FEIIEF/p/14327587.html