알고리즘문제풀이

백준 7868 해밍 수열

배우겠습니다 2023. 11. 12. 15:33

문제

https://www.acmicpc.net/problem/7868

 

7868번: 해밍 수열

세 소수 p1, p2, p3을 이용해서 해밍 수열 H(p1, p2, p3), i = 1... 을 정의할 수 있다. 해밍 수열 H(p1, p2, p3)은 소인수가 p1, p2, p3로만 이루어진 자연수의 오름 차순 목록이다. 예를 들어, H(2, 3, 5) = 2, 3, 4, 5,

www.acmicpc.net

 

풀이

문제 정의대로 수열에 있는 모든 수는 p1^x * p2^y * p3^z (x,y,z>=0인 자연수)꼴이다.

대표적인 소수가 2가 있다. 수 제한은 10^18이다. 2^60부터 10^18보다 커진다.

따라서 x,y,z는 p1,p2,p3가 무엇이든지 60보다 작다.

따라서 빈 배열을 선언하고 3중반복문으로 수들을 배열에 다 넣으면 된다.

for (int i =0;i<=60;i++) {
	for (int j =0;j<=60;j++){
		for(int k =0;k<=60;k++){
			ll x = pow(p1,i)*pow(p2*j)*pow(p3*j);
			if (1 < x < pow(10,18)){
				vt.pushback(x);
            }	
		}
	}
}

1을 포함하지 않게 주의하자.

 

그리고 정렬하고 출력하면 된다. 굳이 상수커팅할 필요 없다. 60은 4중반복문도 가능한 숫자이다.

'알고리즘문제풀이' 카테고리의 다른 글

백준 13010 h(n)  (0) 2023.11.16
백준 30510 토마에함수  (0) 2023.11.12
백준 20957 농부 비니  (1) 2023.11.06
백준 30409 나비와 전봇대 (Easy)  (1) 2023.11.02
백준 5485 평균값 수열  (0) 2023.10.24