因子中仅仅包含2、3、5的数,称为丑数。比如说14,就不是丑数,因为因子包含7。
请输出所有丑数中的第n个丑数。
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
int calc(int n)
{
int* data = new int[n + 1];
for (int i = 0; i < n + 1; i++)
{
data[i] = 0;
}
data[0] = 1;
int pMul_2 = 0;
int pMul_3 = 0;
int pMul_5 = 0;
int index = 0;
while (index < n)
{
index++;
int d = min(data[pMul_2] * 2, min(data[pMul_3] * 3, data[pMul_5] * 5));
data[index] = d;
while (data[pMul_2] * 2 == data[index])
{
pMul_2++;
}
while (data[pMul_3] * 3 == data[index])
{
pMul_3++;
}
while (data[pMul_5] * 5 == data[index])
{
pMul_5++;
}
}
return data[n - 1];
}
int main()
{
int i, n;
cin >> i;
// TODO write your code here
n = calc(i);
cout << n;
return 0;
}