Задача "степень" C++
Помогите пожалуйста, 15 тестов код проходит, на 16 проваливается.
#include <iostream>
#include <vector>
#include <map>
using namespace std;
map<int, int> factorize(int a) {
map<int, int> factors;
if (a == 1) return factors;
for (int i = 2; i * i <= a; ++i) {
while (a % i == 0) {
factors[i]++;
a /= i;
}
}
if (a > 1) factors[a]++;
return factors;
}
long long compute_power(int p, int xp) {
long long result = 1;
for (int i = 0; i < xp; ++i) {
result *= p;
}
return result;
}
long long compute_N(const map<int, int>& x) {
long long N = 1;
for (const auto& [p, xp] : x) {
N *= compute_power(p, xp);
}
return N;
}
int main() {
int A;
cin >> A;
if (A == 1) {
cout << 1 << endl;
return 0;
}
map<int, int> factors = factorize(A);
map<int, int> x;
for (const auto& [p, k] : factors) {
x[p] = 1;
}
while (true) {
long long N = compute_N(x);
bool all_ok = true;
vector<int> to_increase;
for (const auto& [p, k] : factors) {
long long current = x[p] * N;
if (current < k) {
all_ok = false;
to_increase.push_back(p);
}
}
if (all_ok) {
cout << N << endl;
return 0;
} else {
for (int p : to_increase) {
x[p]++;
}
}
}
return 0;
}

Дай свой тг я всё сделал
Это где задача? Я придумал несколько решений, дай ссылку я порешаю
тут больше требуют математичеких знаний, чем знание языка. Нужно найти какую то закономерность и использовать ее для оптимизации кода.
Типа, вместо подсчета сумма первых n чисел, воспользоваться формулой арифметической прогрессии.