对网易java方向第三题比较有兴趣,用C++写了一个dp
int main()
{
int n,k;
while(cin>>n>>k)
for(int i=0;i<n;i++)
for(int j=1;j<=k;j++)
if(i==n-1)
dp[i][j]=1;
else
dp[i][j]=0;
// dp算法
for(int i=1;i<n;i++)
for(int j=1;j<=k;j++)
for(int m=1;m<=k;m++)
if(j%m!=0||j<=m)
sum+=dp[0][i];
cout<<sum%1000000007;
{
int n,k;
while(cin>>n>>k)
{
long sum=0;
//创建二维数组long sum=0;
int **dp=new int*[n]; for(int i=0;i<n;i++) dp[i]=new int[k+1];
//设置边值条件for(int i=0;i<n;i++)
for(int j=1;j<=k;j++)
if(i==n-1)
dp[i][j]=1;
else
dp[i][j]=0;
for(int i=1;i<n;i++)
for(int j=1;j<=k;j++)
for(int m=1;m<=k;m++)
if(j%m!=0||j<=m)
dp[n-1-i][j]+=dp[n-i][m];
//计算最总输出结果
for(int i=1;i<=k;i++)//计算最总输出结果
sum+=dp[0][i];
cout<<sum%1000000007;
}}