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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 54, средняя оценка - 4.67
Estale
0 / 0 / 0
Регистрация: 12.10.2009
Сообщений: 20
#1

Программа на C++ (Сумма кубов) - C++

12.10.2009, 21:17. Просмотров 6719. Ответов 18
Метки нет (Все метки)

Здравствуйте уважаемые программисты. Подскажите как решать задачу.
Условие таково:
Найти наименьшее натуральное n, которое можно представить двумя различными способами в виде суммы кубов двух натуральных чисел x^3+y^3 (x>=y)

P.S. ^3 - куб
>= - больше или равно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.10.2009, 21:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Программа на C++ (Сумма кубов) (C++):

сумма кубов - C++
Известно, что любое натуральное число можно представить в виде суммы не более чем четырех квадратов натуральных чисел. Вася решил придумать...

Найти двузначное число, сумма кубов цифр которого равна N - C++
Найти двузначное число, сумма кубов цифр которого равна N Вот есть такой код: #include <cstdlib> #include <math.h> using namespace...

Программа, вычисляющая сумму квадратов и кубов чисел - C++
Кому не составит труда, создайте, пожалуйста, программу, вычисляющую сумму квадратов и кубов чисел от 1 до 15.

Сумма (правильно ли написана программа?) - C++
Подскажите, правель но ли написана программа? #include <iostream.h> using namespace std; vad main() { setlocale (LC_ALL,...

Сумма ряда: Программа выдает пустую консоль. Как решить проблему? - C++
Доброго времени суток. Написан код для вычисления суммы бесконечного ряда. Ряд выглядит следующим образом: ...

Не правильно работает... Программа должна найти непрерывные участки, на которых сумма элементов равна 100 - C++
Не правильно работает... Помогите исправить... Программа должна найти непрерывные участки, на которых сумма элементов равна 100 #include...

18
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
12.10.2009, 21:45 #2
Условие x>=y совершенно не нужно

"Подскажите как решать задачу" - что именно ?
Написать ответ, написать алгоритм, написать код ?
0
Estale
0 / 0 / 0
Регистрация: 12.10.2009
Сообщений: 20
12.10.2009, 21:48  [ТС] #3
Цитата Сообщение от odip Посмотреть сообщение
Условие x>=y совершенно не нужно

"Подскажите как решать задачу" - что именно ?
Написать ответ, написать алгоритм, написать код ?
Можно алгоритм, можно код, можно и то и то... А там уже буду пытаться вникнуть в суть ))
0
valeriikozlov
Эксперт С++
4675 / 2501 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
12.10.2009, 21:55 #4
Вот код, но уже 2 минуты жду и не дождусь результата.
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
37
38
39
40
41
42
43
44
#include <iostream.h>
#include <math.h>
#include <process.h>
int a, b, c, d, n;
int main()
{
    for(n=2;; n++)
    for(a=1;a<n-1;a++)
        for(b=1; b<n-1; b++)
            if(pow(a,3)+pow(b,3)==n)
            {   
                for(c=1;c<n-1;c++)
                    for(d=1; d<n-1; d++)
                        if((pow(c,3)+pow(d,3)==n) && c!=a && c!=b)
                        {
                            cout<<"n = "<<n<<endl;
                            if(b<a)
                            {
                                cout<<"x1 = "<<a<<endl;
                                cout<<"y1 = "<<b<<endl;
                            }
                            else
                            {
                                cout<<"x1 = "<<b<<endl;
                                cout<<"y1 = "<<a<<endl;
                            }
                            if(d<c)
                            {
                                cout<<"x2 = "<<c<<endl;
                                cout<<"y2 = "<<d<<endl;
                            }
                            else
                            {
                                cout<<"x2 = "<<d<<endl;
                                cout<<"y2 = "<<c<<endl;
                            }
 
                            system("pause");
                            exit(1);
                        }
            }
    
    return 0;
}
0
HIMen
4150 / 1399 / 39
Регистрация: 12.04.2009
Сообщений: 2,346
12.10.2009, 21:57 #5
process.h там явно не нужен и зачем a b c d n глобальные?
0
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
12.10.2009, 22:07 #6
Ответ
n=20683 x=10 y=27
n=20683 x=19 y=24
0
valeriikozlov
Эксперт С++
4675 / 2501 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
12.10.2009, 22:07 #7
HIMen,
цикл "for(n=2;; n++);" бесконечный, чтобы его закончить при нахождении нужных значений, использую "exit(1);", для которого нужен "process.h". Ведь даже при нахождении нужного значения цикл будет продолжаться без "exit(1);". Если есть другой вариант - предлагайте.
Насчет a b c d n глобальных - не возражаю, можно и не глобальные.
Кстати, появился результат:
n=1729
x1=12
y1=1
x2=10
y2=9
0
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
12.10.2009, 22:09 #8
2valeriikozlov: Судя по моему ответу 4 цикла по 21000 значений.
Ну вообщем твой код будет очень долго считать

Добавлено через 51 секунду
О!
Я где-то обсчитался
0
valeriikozlov
Эксперт С++
4675 / 2501 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
12.10.2009, 22:10 #9
odip,
Но зато каков ответ
0
HIMen
4150 / 1399 / 39
Регистрация: 12.04.2009
Сообщений: 2,346
12.10.2009, 22:15 #10
Цитата Сообщение от valeriikozlov Посмотреть сообщение
HIMen,
цикл "for(n=2;; n++);" бесконечный, чтобы его закончить при нахождении нужных значений, использую "exit(1);", для которого нужен "process.h".
зачем лишние библиотеки, goto как раз для этой ситуации
0
Estale
0 / 0 / 0
Регистрация: 12.10.2009
Сообщений: 20
12.10.2009, 22:18  [ТС] #11
Может можно как-то через "switch", "case" и "break" и обойтись без "exit(1)"?
0
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
12.10.2009, 22:24 #12
Нашел ошибку - нефиг было на perl писать
Правильный ответ: 1729
Только считать можно во много раз быстрее.

Добавлено через 1 минуту
Вообщем код на Perl
Perl 6
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
#!/usr/bin/perl
 
use 5.8.8; use strict; use warnings;
 
sub power($$);
 
 
my ($n,$x,$y,$count,$n_3,$ost);
 
for ($n= 1; ; $n++ ) {
    $count= 0;
    for ( $x= 1; ; $x++ ) {
        $ost= $n-$x*$x*$x;
        if ( $ost<=0 ) { last; }
        $y= int( power( $ost, 1.0/3.0 )+0.5 );
 
        if ( $x<=$y && $ost == $y*$y*$y ) {
            $count++;
            #print "n=$n count=$count x=$x y=$y\n";
        }
    }
    if ( $count>=2 ) { print "n=$n\n"; last; }
}
 
exit 0;
 
 
#### sub ####
sub power($$) {
 
return exp( $_[1]*log( $_[0] ) );
 
} #### power()
На C нетрудно переделать.
Считает очень быстро

Добавлено через 3 минуты
Код
n=1729
n=4104
n=13832
n=20683
n=32832
n=39312
n=40033
n=46683
n=64232
n=65728
n=110656
n=110808
n=134379
n=149389
n=165464
n=171288
n=195841
n=216027
n=216125
n=262656
n=314496
n=320264
n=327763
n=373464
n=402597
n=439101
n=443889
n=513000
Это разные n.
0
Estale
0 / 0 / 0
Регистрация: 12.10.2009
Сообщений: 20
12.10.2009, 22:25  [ТС] #13
Цитата Сообщение от odip Посмотреть сообщение
Нашел ошибку - нефиг было на perl писать
Правильный ответ: 1729
Только считать можно во много раз быстрее.

Добавлено через 1 минуту
Вообщем код на Perl
Perl 6
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
#!/usr/bin/perl
 
use 5.8.8; use strict; use warnings;
 
sub power($$);
 
 
my ($n,$x,$y,$count,$n_3,$ost);
 
for ($n= 1; ; $n++ ) {
    $count= 0;
    for ( $x= 1; ; $x++ ) {
        $ost= $n-$x*$x*$x;
        if ( $ost<=0 ) { last; }
        $y= int( power( $ost, 1.0/3.0 )+0.5 );
 
        if ( $x<=$y && $ost == $y*$y*$y ) {
            $count++;
            #print "n=$n count=$count x=$x y=$y\n";
        }
    }
    if ( $count>=2 ) { print "n=$n\n"; last; }
}
 
exit 0;
 
 
#### sub ####
sub power($$) {
 
return exp( $_[1]*log( $_[0] ) );
 
} #### power()
На C нетрудно переделать.
Считает очень быстро
Быстро... Но мне быстро и не надо.
Мне нужно написать эту программу как можно проще, чтобы разобраться в ней, понять принцип и нормально объяснить преподавателю если будут вопросы по программе.

Поэтому если можно, то как можно проще... Заранее благодарен!
0
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
12.10.2009, 22:31 #14
Хорошо - способен ты понять код в посте #12 или в посте #4 ?
0
Estale
0 / 0 / 0
Регистрация: 12.10.2009
Сообщений: 20
12.10.2009, 22:43  [ТС] #15
Цитата Сообщение от odip Посмотреть сообщение
Хорошо - способен ты понять код в посте #12 или в посте #4 ?
Тот что в #12 я без понятия...
Тот что в #4 вроде понятен, но хотелось бы узнать можно ли как-то обойтись без exit(1) и написать например через switch-case-break ?
И ещё, cout это как я понимаю ввод?
0
12.10.2009, 22:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.10.2009, 22:43
Привет! Вот еще темы с ответами:

Программа должна распечатывать прописью значение суммы в долларах,если введена сумма в рублях,или... - C++
Суммы денег могут вводиться в рублях и долларах.Программа должна распечатывать прописью значение суммы в долларах,если введена сумма в...

Программа для ввода и вывода фамилий и оценок студентов. Отберите тех, у которых сумма баллов вторая по вел - C++
Программа для ввода и вывода фамилий и оценок студентов. Отберите тех, у которых сумма баллов вторая по величине #include&lt;stdio.h&gt; ...

Разложение в сумму кубов - C++
Доброго времени суток! Есть такая задача. Дано натуральное число N. Необходимо представить его в виде суммы точных кубов, содержащей...

Цикл for: напечатать таблицу кубов чисел от 1 до 50 - C++
С помощью цикла for напечатать таблицу кубов чисел от 1 до 50. У программы нет входа. Выход выглядит так: 1 - 1 2 - 8 3 - 27 … … ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.