转载别人的一种解法,但是还是按自己的理解另写一种
//给出整数N,输出第N个丑陋数(仅有素因子2、3和5的整数)
//POJ 1338
//使用离线算出来,在排序,在查找。
#include<iostream>
using namespace std;
void bubbleSort(unsigned int a[],int size)
{
int temp;
bool flag;
for(int i=0;i<size-1;++i)
{
flag=true;
for(int j=1;j<size-i-1;++j)
{
if(a[j]>a[j+1])
{
flag=false;
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
if(flag)
break;
}
}
int main()
{
unsigned int x,n=0;
unsigned int a[1500]={0};
unsigned int limit=1000000000;
for(int i=1;i<limit;i*=2)
{
for(int j=1; i*j<limit;j*=3)
{
for(int k=1; i*j*k<limit;k*=5)
{
a[n]=i*j*k;
++n;
if(1500==n)
break;
}
if(1500==n)
break;
}
if(1500==n)
break;
}
bubbleSort(a,1500);
/* for(int i=1;i<=100;++i)
{
cout<<a[i-1]<<" ";
if(0==i%10)
cout<<endl;
}*/
cin>>x;
while(x)
{
cout<<a[x-1]<<endl;
cin>>x;
}
return 0;
}