Представить число в виде сумы кубов двух натуральных чисел

Я только начинаю учится, напишите плиз программу задачей которой является представить число в виде сумы кубов двух натуральных чисел, заранее благодарен)
1 ответ

Ну... Это не такая уж и простая задача. К слову, обычно здесь помогают, а не пишут с нуля. Ну да ладно. Влоб примерно так. Надо будет подумать над улучшением, а именно - как быстрее брать кубический корень, как пропускать очевидно неподходящие числа (и критерии этой "очевидности").
Дубль кода
#include <iostream>
#include <utility>
#include <cmath>
 
#define EPS 1e-5
 
typedef unsigned int ****;
 
std::pair < ****, **** >* to_cube_sum ( **** n ) {
    for ( **** i = 0; i < n; i++ ) { /* проходимся по всем числам меньше данного
                                        и если данное число за вычетом квадрата
                                        текущего - квадрат, то эти числа - искомые */
        ****** invcube = pow ( (******)(n - i*i*i), 1./3. );
        if ( (invcube - (****)(invcube + EPS) ) < 2*EPS ) { // нечёткое сравнение
            return new std::pair < ****, **** > ( i, (****)invcube );
        }
    }
    
    return nullptr; // в случае неуспеха возвращаем null
}
 
int main() {
    **** t;
    while ( !std::cin.eof () ) {
        std::cin >> t;
        auto p = to_cube_sum ( t );
        std::cout << t << ": ";
        if ( p != nullptr ) {
            std::cout << p->first << " " << p->second << std::endl;
        } else {
            std::cout << "not found" << std::endl;
        }
    }
    
    return 0;
}