Programming/Algorithm

[Algorithm] C++ Ugly Numbers (투포인트 알고리즘)

100winone 2020. 1. 2. 15:13

입력예제 1

10

 

출력예제 1

1500

 

입력예제 2

1500

 

출력예제 2

859963392

 

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<vector>
#include<algorithm>

using namespace std;
int a[1501];
int main() {
	int n, i, p2, p3, p5, min = 2147000000;
	scanf("%d", &n);
	a[1] = 1;
	p2 = p3 = p5 = 1;
	for (i = 2; i <= n; i++) {
		if (a[p2] * 2 < a[p3] * 3) {
			min = a[p2] * 2;
		}
		else {
			min = a[p3] * 3;
		}
		if (a[p5] * 5 < min) {
			min = a[p5] * 5;
		}
		if (a[p2] * 2 == min) p2++;
		if (a[p3] * 3 == min) p3++;
		if (a[p5] * 5 == min) p5++;
		a[i] = min;
	}
	printf("%d\n", a[n]);
	return 0;
}