// 100_37.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
long ugly(long index)
{
	long * uglyNum = new long[index];
	uglyNum[0] = 1;
	long next = 1;
	long * p2 = uglyNum;
	long * p3 = uglyNum;
	long * p5 = uglyNum;
	while(next < index)
	{
		long temp2 = (*p2)*2;
		long temp3 = (*p3)*3;
		long temp5 = (*p5)*5;
		long min = temp2;
		if(temp3<temp2 && temp3<temp5)
			min = temp3;
		else if(temp5<temp3 && temp5<temp2)
			min = temp5;
		uglyNum[next] = min;
		while(*p2 * 2 <= min)
			++p2;
		while(*p3 * 3 <= min)
			++p3;
		while(*p5 * 5 <= min)
			++p5;
		next++;
	}
	long result = uglyNum[index-1];
	delete [] uglyNum;
	return result;
}
int _tmain(int argc, _TCHAR* argv[])
{
	printf("%ld\n",ugly(100));
	return 0;
}