hdu 1058

dp思想,找出质因子只含有2,3,5,7的数

code:

#include<iostream>
using namespace std;
int a[6000];
int min(int aa,int bb,int cc,int dd)
{
   if(aa<=bb&&aa<=cc&&aa<=dd)return aa;
   else if(bb<=aa&&bb<=cc&&bb<=dd) return bb;
   else if(cc<=aa&&cc<=bb&&cc<=dd) return cc;
   return dd;
}
   
int main()
{
   a[1]=1;          
   int i,t2=1,t3=1,t5=1,t7=1,t,j; 
   for(i=2;i<=5842;i++)    
   {
      t=min(2*a[t2],3*a[t3],5*a[t5],7*a[t7]); 
                                                 
        if(t==2*a[t2])t2++;                    
        if(t==3*a[t3])t3++;                    
        if(t==5*a[t5])t5++;
        if(t==7*a[t7])t7++;
         a[i]=t;
   }
   
   while(scanf("%d",&i)&&i!=0)
	{
		if(i%10==1&&i%100!=11)                                  ///*最后一位必需是1,但是最后2位不是11.用st 
			printf("The %dst humble number is %d.\n",i,a[i]);   //     
		else if(i%10==2&&i%100!=12)                             //最后一位如果是2,但是最后2位不是12,用nd
			printf("The %dnd humble number is %d.\n",i,a[i]);     
		else if(i%10==3&&i%100!=13)                            // ....... 
			printf("The %drd humble number is %d.\n",i,a[i]);
		else
			printf("The %dth humble number is %d.\n",i,a[i]);     // 其他*/ 
	}

   return 0;
}

 

你可能感兴趣的:(hdu 1058)