【 声明:版权所有,转载请标明出处,请勿用于商业用途。 联系信箱:libin493073668@sina.com】
题意:
如果一个数只含有2,3,5这三种因子,那么这个数就是Ugly number,现在要求第n个Ugly number是什么
思路:
开一个a数组存放所有Ugly number,然后a2,a3,a5存放乘2,3,5的所有数,每次找一个最小的放入a中,并增加长度
class Solution
{
public:
int nthUglyNumber(int n)
{
int* a=new int[n+1];
int* a2 = a;
int* a3 = a;
int* a5 = a;
int cnt = 0;
a[cnt++] = 1;
while(cnt<n)
{
int num = min(*a2*2,min(*a3*3,*a5*5));
a[cnt++] = num;
while(*a2*2<=num)
a2++;
while(*a3*3<=num)
a3++;
while(*a5*5<=num)
a5++;
}
return a[cnt-1];
}
};