Вывод следующего кода отличается, когда используется мой встроенный терминал и когда используется онлайн-редактор (GeeksForGeeks). Он отлично работает на моей IDE (Vscode, MingGW64 g ++ (8.1.0)). Например: для t = 1, x = 12 и p = 2 выходные данные, заданные моей IDE, равны 0 (правильно), тогда как онлайн-редактор выдает 1 (неправильно). Онлайн-редактор использует g ++ (5.4). Как это, что компиляторы так сильно различаются здесь? Что я должен сделать по-другому, чтобы решить эту проблему?
#include <iostream>
#include <cmath>
using namespace std;
void express(int x, int p, int &n_root, int &c, int curr_num)
{
int power;
for(int i = curr_num + 1; i <= n_root; ++i)
{
power = pow(i, p);
if(power < x) express(x - power, p, n_root, c, i);
else break;
}
if(x == power) ++c;
return;
}
int main()
{
/*ios_base::sync_with_stdio(false);
cin.tie(NULL);*/
int t, i;
cin >> t;
for(i = 0; i < t; ++i)
{
int x, p, c, n_root;
cin >> x >> p;
c = 0;
n_root = (int)pow(x, 1.0/p);
express(x, p, n_root, c, 0);
cout << c << endl;
}
return 0;
}