题目大意
解题思路
从1到5842,每层循环四次,一层层的解,找出每一层由2,3,5,7四个值相乘组成的最小值,最小值赋值到数组里,其余的乘式保留。
代码实现
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,i,j,k,l;
i=j=k=l=1;
int dp[5843];
dp[1]=1;
for(int count=2;count<5843;count++)
{
dp[count]=min(min(dp[i]*2,dp[j]*3),min(dp[k]*5,p[l]*7));
if(dp[count]==dp[i]*2) i++;
if(dp[count]==dp[j]*3) j++;
if(dp[count]==dp[k]*5) k++;
if(dp[count]==dp[l]*7) l++;
}
while(cin>>n&&n!=0)
{
cout<<"The "<<n;
if(n%10==1&&n%100!=11)
cout<<"st ";
else if(n%10==2&&n%100!=12)
cout<<"nd ";
else if(n%10==3&&n%100!=13)
cout<<"rd ";
else
cout<<"th ";
cout<<"humble number is "<<dp[n]<<"."<<endl;
}
return 0;
}