Creative Code

[2312번]수 복원하기 본문

백준 문제풀이

[2312번]수 복원하기

빛하루 2024. 1. 27. 23:37

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

 

2312번: 수 복원하기

첫째 줄에 테스트 케이스의 수가 주어진다. 각 테스트 케이스마다 양의 정수 N (2 ≤ N ≤ 100,000)이 주어진다.

www.acmicpc.net

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>

using namespace std;

void solution(int k) {
	int a = 2; // 처음 나눌 소인수
	int b = 0; // a로 나누어떨어지는 횟수
	while (k > 1) {
		if (k % a == 0) { // k가 a로 나누어떨어질때
			b++; // 횟수 추가
			k /= a;
			if (k % a != 0) {
				printf("%d %d\n",a, b); // 더이상 나누어떨어지지 않으면 소인수와 횟수 출력
			}
		}
		else {
			a++; // 인수 1증가
			b=0; // 횟수는 0 으로 초기화
		}
	}
}

int main() {
	cin.tie(0);
	cout.tie(0);
	ios_base::sync_with_stdio(false);
	int T; // 테스트 케이스의 갯수
	cin >> T;
	while (T > 0) {
		int a;
		cin >> a;
		solution(a);
		T--;
	}
}

'백준 문제풀이' 카테고리의 다른 글

[2579번]계단 오르기  (0) 2024.05.09
[2638번]치즈  (0) 2023.09.25
[1987번]알파벳  (0) 2023.09.25
[9251번]LCS  (0) 2023.09.25
[17144번]미세먼지 안녕!  (0) 2023.09.24