52. ugly numbers

강지훈·2021년 12월 6일
0

어떤 수를 소인수분해 했을 때 그 소인수가 2 또는 3 또는 5로만 이루어진 수를 Ugly
Number라고 부릅니다. Ugly Number를 차례대로 적어보면
1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, .......입니다. 숫자 1은 Ugly Number의 첫 번째 수로 합
니다. 자연수 N이 주어지면 Ugly Number를 차례로 적을 때 N번째 Ugly Number를 구하는
프로그램을 작성하세요.
▣ 입력설명
첫 줄에 자연수 N(3<=N<=1500)이 주어집니다.
▣ 출력설명
첫 줄에 N번째 Ugly Number를 출력하세요.
▣ 입력예제 1
10
▣ 출력예제 1
12
▣ 입력예제 2
1500
▣ 출력예제 2
859963392

#include
#include
using namespace std;

int a[1501];

int main() {
int n,i,p2,p3,p5,min=2147000000;
cin >> n;
a[1]=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; //p1 p2둘중 최솟값

	if(a[p5]*5<min) min=a[p5]*5; //최솟값 나온것과 p5 비교 
	if(a[p2]*2==min) p2++;
	if(a[p3]*3==min) p3++;
	if(a[p5]*5==min) p5++;
	
	a[i]=min;
}

cout<<a[n];
return 0;

}

profile
never stop

0개의 댓글