uva 136
寻找丑数,因子里只有2,3,5的数叫做丑数,找出第1500个丑数,首先想到可以一个一个判断,后来发现TLE了,所以应该从1开始,逐个乘以2,3,5,然后得到不重复的最小数,重复此步骤就可得到结果
View Code
1 #include<stdio.h>//暴力破解会超时 2 int min(int a,int b)//输出最小数 3 { 4 if(a>=b) 5 return b; 6 else return a; 7 } 8 int main() 9 { 10 int a[1501],b[3]; 11 int i,j,temp,a1,a2,a3; 12 a[1]=1; 13 for(i=1;i<=1500;) 14 { 15 for(j=0;j<=i,a[j]*2<=a[i];j++); 16 b[0]=a[j]*2; 17 for( j=0;j<=i,a[j]*3<=a[i];j++); 18 b[1]=a[j]*3; 19 for( j=0;j<=i,a[j]*5<=a[i];j++); 20 b[2]=a[j]*5;//将前面的数依次乘上2,3,5,保留第一个大于那个本身的数 21 a[i+1]=min(b[0],min(b[1],b[2])); 22 i++;//保留最小的 23 } 24 printf("The 1500'th ugly number is %d.\n",a[1500]); 25 return 0; 26 }