int getmin(int a,int b,int c)
{
if(a>b)
{
if(b>c)
return c;
else
return b;
}
else
{
if(a>c)
return c;
return a;
}
}
class Solution {
public:
int nthUglyNumber(int n) {
if(n==1)
return 1;
int i,j,k;
int a[100000];
int pos1=0;
int pos2=0;
int pos3=0;
int factor1=2,factor2=3,factor3=5;
a[0]=1;
for(i=1;i<n;i++)
{
a[i]=getmin(factor1,factor2,factor3);
if(factor1==a[i])
{
factor1=2*a[++pos1];
}
if(factor2==a[i])
{
factor2=3*a[++pos2];
}
if(factor3==a[i])
{
factor3=5*a[++pos3];
}
}
return a[n-1];
}
};