알고리즘

백준 2777번 숫자 놀이 C++

영춘권의달인 2022. 1. 29. 15:47

출처 : https://www.acmicpc.net/problem/2777

 

한 자리수 중 가장 큰 수인 9부터 2까지의 곱으로 나타낼 수 있는지 확인하고 가능하다면 그 개수를 출력하고, 가능하지 않다면 -1을 출력한다. 1은 따로 처리해 주었다.

 

#include <iostream>
#include <string>
#include <vector>
#include <math.h>
#include <algorithm>
#include <utility>
#include <stack>
#include <queue>
#include <math.h>
#include <set>
#include <map>
#include <unordered_map>
#include <unordered_set>

using namespace std;
using ll = long long;

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int t, n;
	cin >> t;
	while (t--) {
		cin >> n;
		if (n == 1) {
			cout << 1 << "\n";
			continue;
		}
		vector<int> factors;
		int div = 9;
		while (div > 1) {
			if (n % div == 0) {
				n /= div;
				factors.push_back(div);
			}
			else {
				div--;
			}
		}
		if (n == 1) cout << factors.size() << "\n";
		else cout << -1 << "\n";
	}
};