zoukankan      html  css  js  c++  java
  • Problem : 这个题如果不是签到题 Asm.Def就女装(积性函数dp

    https://oj.neu.edu.cn/problem/1460

    思路:若n=(p1^a1)*(p2^a2)...(pn^an),则f(n,0)=a1*a2*...*an,显然f(n,0)是积性函数,对于f(x,y)可以看出他是f(x,y-1)与自身进行狄利克雷卷积得到的结果,所以f(x,y)也是积性函数。因此,只要对n质因子分解,然后预处理出次方的dp值即可。注意积性函数的概念中a,b必须互质!

    #include<bits/stdc++.h>
    #define int long long
    using namespace std;
    const int mod = 1000000007;
    const int maxn = 1000000+5,maxm = 10000+5;
    int dp[30][maxm];
    vector<int> g[maxn];
    
    inline void solve(int n){
        int nn = n;
        for(int i=2;i*i<=n;i++){
            if(n%i==0){
                int num = 0;
                while(n%i==0) n/=i,num++;
                g[nn].push_back(num);
            }
        }
        if(n>1) g[nn].push_back(1);
    }
    
    void init(int n=30,int m=maxm){
        for(int i=1;i<n;i++) dp[i][0] = i;
        for(int i=1;i<n;i++){
            for(int j=1;j<m;j++){
                if(i==1){
                    dp[i][j] = dp[i][j-1]*2%mod;
                }
                else {
                    dp[i][j] = dp[i][j-1]*2%mod;
                    for(int k=1;k<i;k++){
                        dp[i][j] = (dp[i][j] + dp[k][j - 1] * dp[i - k][j - 1] % mod) % mod;
                    }
                }
            }
        }
    }
    
    
    signed main(){
        ios::sync_with_stdio(0);
        cin.tie(0);
        cout.tie(0);
        init();
        int t;
        cin>>t;
        while(t--){
            int n,m;
            cin>>n>>m;
            if(n==1) cout<<1<<endl;
            else{
                if(g[n].size()==0) solve(n);
                int ans = 1;
                for(int i=0;i<g[n].size();i++){
                    ans = ans*dp[g[n][i]][m]%mod;
                }
                cout<<ans<<endl;
            }
        }
        return 0;
    }
    
  • 相关阅读:
    Puzzle, ACM/ICPC World Finals 1993, UVa227
    Puzzle, ACM/ICPC World Finals 1993, UVa227
    All in All, UVa 10340
    All in All, UVa 10340
    Box, ACM/ICPC NEERC 2004, UVa1587
    Box, ACM/ICPC NEERC 2004, UVa1587
    动态文本输出
    形态分析法
    粒子系统
    思维
  • 原文地址:https://www.cnblogs.com/wzgg/p/11434498.html
Copyright © 2011-2022 走看看