Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перегрузка операторов для матрицы http://www.cyberforum.ru/cpp-beginners/thread1018052.html
Создаю класс матрицы, перегружаю операторы. Но... Matrix& Matrix::operator=(Matrix t) и Matrix& Matrix::operator *= (const Matrix &rhs) ...не хотят работать как надо. Не...
C++ Двумерный массив по ссылке Скажите, пожалуйста, что я не так делаю? Есть функция - на вход ей дается двумерный массив, который она должна изменить: string takingFirstLine(int sizeOfMyArray, int *game, string firstLine) { ... http://www.cyberforum.ru/cpp-beginners/thread1018049.html
Вывод максимального и минимального значения C++
Что не так? Выводит: 8 9 Максимальное значение 8004304 Минимальное значение 8 #include <iostream> #include <string> using namespace std; int main ()
C++ Поразрядная конъюнкция / Дизъюнкция / Исключающие, (&), (|), (^)
... cout << "\n 6 & 5 = " << (6 & 5); cout << "\n 6 | 5 = " << (6 | 5); cout << "\n 6 ^ 5 = " << (6 ^ 5); ... Результат:
C++ Найти номера всех максимальных элементов массива http://www.cyberforum.ru/cpp-beginners/thread1018023.html
Дан массив а, состоящий из n целых чисел (n<=100). Найти номера всех максимальных элементов массива. за помощь спасибо)
C++ Матрицы,нахождение максимального и минимального элемента Здравствуйте!Помогите пожалуйста с программой,по условию нужно найти максимальный и минимальный элемент матрицы и разместить их на первом и последнем месте строки соответственно,а как их поместить на... подробнее

Показать сообщение отдельно
AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 533
25.11.2013, 06:41
Ну... Это не такая уж и простая задача. К слову, обычно здесь помогают, а не пишут с нуля.
Ну да ладно. Влоб примерно так. Надо будет подумать над улучшением, а именно - как быстрее брать кубический корень, как пропускать очевидно неподходящие числа (и критерии этой "очевидности").

Дубль кода
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
#include <utility>
#include <cmath>
 
#define EPS 1e-5
 
typedef unsigned int uint;
 
std::pair < uint, uint >* to_cube_sum ( uint n ) {
    for ( uint i = 0; i < n; i++ ) { /* проходимся по всем числам меньше данного
                                        и если данное число за вычетом квадрата
                                        текущего - квадрат, то эти числа - искомые */
        double invcube = pow ( (double)(n - i*i*i), 1./3. );
        if ( (invcube - (uint)(invcube + EPS) ) < 2*EPS ) { // нечёткое сравнение
            return new std::pair < uint, uint > ( i, (uint)invcube );
        }
    }
    
    return nullptr; // в случае неуспеха возвращаем null
}
 
int main() {
    uint 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;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru