Присваиваешь иксу случайное значение, потом игреку. Подставляешь в формулу, сравниваешь результат с условием. Если не совпало - проверяем дальше. Если совпало - выводим на экран и проверяем дальше.
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int count = 333;
int res = 36926037;
for (int x = 0; x <= count; x++)
{
for (int y = 0; y <= count; y++)
{
if (pow(x, 3) + pow(y, 3) == res)
{
cout << x << " | " << y << endl;
}
}
}
return 0;
}
Просто преп решил надо мной посмеятся с этим вопросом. Но он не учел, что тут у меня есть верные друзья, которые с удовольствием расскажут какая ты тупаяпомогут в трудную минуту.
Наверное таки троллит. Ибо, если заменить целые числа на мультипликативную группу кольца. То ты уже одной ногой в криптографии эллиптических кривых. ;)
Которое переводим в систему уравнений и перебором значений правой стороны находим или не находим нетривиальные решения в ℤ:
#!/usr/bin/env python3
import sympy
x = sympy.Symbol('x')
y = sympy.Symbol('y')
for p3 in range(0, 7):
for p37 in range(0, 4):
sys = (
x + y - (3 ** p3) * (37 ** p37),
x ** 2 - x * y + y ** 2 - (3 ** (6 - p3)) * (37 ** (3 - p37)),
)
for sol in sympy.nonlinsolve(sys, (x, y)):
if all(sympy.ask(sympy.Q.integer(s)) for s in sol):
print(sol)
$ ./solve.py
(0, 333)
(333, 0)
Но это только если можно использовать сторонние библиотеки 8).
Короче смотри. Разложим 333^3=a*b на пару множителей (a,b).
x^3 + y^3 = (x + y) (x^2 - x y + y^2) = a b
a = (x + y)
b = (x^2 - x y + y^2)
ну или -a = (x + y), -b = (x^2 - x y + y^2)
Выражаем x и y через a и b, и видим, что a как минимум должно делиться на 2, чтобы x и y получались целыми. Но a на два не делится, как ни раскладывай 333^3. Значит, в целых числах решений нет (кроме тривиальных с нулями). О чём и рапортует вольфрам.
Уймись. В целых числах будет то же самое. Потому что если, скажем, y отрицательное, а x положительное, то это переписывается в виде x^3 = 333^3 + (-y)^3, и по той же теореме Ферма решений нет. А если оба отрицательные, то вообще бред, слева от знака равенства отрицательное число, справа — положительное.
Очевидно, что x и y могут принимать значения от 0 до 333 (если, как подметили выше, рассматривать неотрицательные целые). И.к. там знак +. Более того проверить можно только числа от 0 до 162.
Но можешь пойти дальше и сначала исследовать функцию, после чего показать, что у неё только 2 решения и просто вывести его на экран.
Уже вспомнил :( Поэтому лучше сразу обратиться к теореме Ферма, которую здесь напомнили, и выяснить, что решений для одновременно целые ненулевые - нет.