不确定正解,中间断网了半小时,来不及提交
#include<cstdio>
#include<string>
#include <string>
#include <iostream>
#include <vector>
using namespace std;

int dp[1010][1010];
vector<int> v;
int n,m;
int main(int argc, char const *argv[])
{
    cin>>n>>m;
    dp[1][m]=1;
    for(int i=1;i<=m;++i) if(m%i==0) v.push_back(i);
    for(int i=2;i<=n;++i)
        for(int j=1;j<=m;++j) if(dp[i-1][j])
        {
            for(auto x:v)
            {
                if(j<x) break;
                else if(j%x==0) dp[i][x]+=dp[i-1][j];
            }
        }
    int ans=0;
    for(auto x:v) ans+=dp[n][x];
    printf("%d\n", ans);
    return 0;
}