不确定正解,中间断网了半小时,来不及提交
#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;
}