백준 문제풀이
[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--;
}
}