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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.72
dirn
Сообщений: n/a
#1

алгоритм для определения любых 2 последовательных нечетных чисел, сумма которых равна N в кубе - C++

10.09.2009, 20:23. Просмотров 3156. Ответов 11
Метки нет (Все метки)

требуется написать алгоритм для определения любых 2 последовательных нечетных чисел, сумма которых равна N в кубе, для N = 1. . . 20

Добавлено через 13 минут
кому не сложно..помогите решить эту задачу. заранее спасибо!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.09.2009, 20:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос алгоритм для определения любых 2 последовательных нечетных чисел, сумма которых равна N в кубе (C++):

Определить количество М-значных натуральных чисел, у которых сумма цифр, стоящих в нечетных разрядах, равна N - C++
Определить количество М-значных натуральных чисел, у которых сумма цифр, стоящих в нечетных разрядах, равна N (1<N< 30,...

Вывести наименьшее из целых чисел К, для которых сумма 1+2 +...+ К будет больше или равна заданному N - C++
Дано целое число N (> 1). Вывести наименьшее из целых чисел К, для которых сумма 1+2 +...+ К будет больше или равна N, и саму эту сумму.

Вывести наибольшее из целых чисел К,для которых сумма 1+2+...+К будет меньше или равна N, и саму эту сумму. - C++
while. Дано целое число N(>1).Вывести наибольшее из целых чисел К,для которых сумма 1+2+...+К будет меньше или равна N, и саму эту сумму....

Написать функцию для определения наличия в файле чисел, у которых сумма цифр целой и дробной части равны - C++
2)Дан текстовый файл с неизвестным количеством вещественных чисел. Написать функцию для определения есть ли среди них число у которого...

Из чисел от 10 до 99 вывести те, сумма цифр которых равна n - C++
Из чисел от 10 до 99 вывести те, сумма цифр которых равна n (n вводится с клавиатуры, n =< 18) Очень прошу. Заранее благодарен.

Из чисел от 10 до 99 вывести те, сумма цифр которых равна n - C++
Прошу помочь с 3-мя задачками очень нужно сдать а сделать никак не могу. 3) Из чисел от 10 до 99 вывести те, сумма цифр которых равна n...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
10.09.2009, 20:38 #2
Слухай, а что значит "последовательные нечётные"? 3-5 катят, а 3-7 нет?
И для любого нечётного N решений вообще нет. ибо, сумма нечётных чисел даёт чётное, а нечётное в кубе есть нечётное.
И впринципе какой тут алгоритм может быть? В лоб и решать.
Возводишь чётное N в куб. и в цикле отнимаешь от него temp=1. если разность !=temp+2, то следующая итерация с temp+=2. Если разность меньше temp, остановливаем цикл и говорим такой пары нет и переходим к следующему чётному N. если разность N^3-temp==temp+2, то выводим пару.
Чего тут думать, писать надо.
Somebody
2788 / 1602 / 145
Регистрация: 03.12.2007
Сообщений: 4,193
Завершенные тесты: 1
10.09.2009, 20:42 #3
В чём проблема? Идёшь по N от 1 до 20, возводишь в куб, делишь пополам, если целое и чётное, прибавляешь единицу, вычитаешь единицу - пара чисел (логично, что чтобы вышла заданная сумма, эти числа должны отличаться на единицу от половины).
odip
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
10.09.2009, 20:59 #4
20**3==8000
Пусть x - нечетное число.
Минимальное x будет 1.
Максимальное x не будет превышать 4000,
так как 3999+(3999+2) == 8000.

В цикле перебираем все x.
sum= x+(x+2);
Вычисляем примерное число n: n2= корень_3_ей_степени( sum );
Далее проверяем что n2*n2*n2 == sum
И проверяем что 1<=n2<=20.
Если все успешно - печатаем x.

Добавлено через 6 минут
Ха - somebody прав - по N перебирать быстрее
Кстати N нужно брать только четные.
Тогда N**3 - всегда делится на 8, на 4, на 2.
И все эти N дадут в итого пару цифр.
Итого будет 10 пар ответов.

Добавлено через 6 минут
Вот
Код
3+5       ==    8 ==  2**3
31+33     ==   64 ==  4**3
107+109   ==  216 ==  6**3
255+257   ==  512 ==  8**3
499+501   == 1000 == 10**3
863+865   == 1728 == 12**3
1371+1373 == 2744 == 14**3
2047+2049 == 4096 == 16**3
2915+2917 == 5832 == 18**3
3999+4001 == 8000 == 20**3
dirn
Сообщений: n/a
11.09.2009, 11:27 #5
да, но это должно быть написано в С++...то есть програма при вводе одной цифры, на пример N=20..должна выдать 3999+4001
odip
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
11.09.2009, 11:30 #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
int main( void ) {
 
std::cout <<
"3+5       ==    8 ==  2**3\n"
"31+33     ==   64 ==  4**3\n"
"107+109   ==  216 ==  6**3\n"
"255+257   ==  512 ==  8**3\n"
"499+501   == 1000 == 10**3\n"
"863+865   == 1728 == 12**3\n"
"1371+1373 == 2744 == 14**3\n"
"2047+2049 == 4096 == 16**3\n"
"2915+2917 == 5832 == 18**3\n"
"3999+4001 == 8000 == 20**3\n";
 
return 0;
 
}
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
11.09.2009, 11:34 #7
odip, жжошь
easybudda
Модератор
Эксперт CЭксперт С++
9530 / 5523 / 932
Регистрация: 25.07.2009
Сообщений: 10,606
11.09.2009, 12:01 #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
using std::cout;
using std::endl;
 
/* алгоритм для определения любых 2 последовательных нечетных чисел, сумма которых равна N в кубе */
 
int main(){
    int n;
    
    for ( n = 1; n <= 20; n++ ) 
        if ( (n*n*n) % 2 == 0 )
            cout << n << "*" << n << "*" << n << " = " << (n*n*n/2 - 1) << " + " << (n*n*n/2 + 1) << " = " << (n*n*n) << endl;
    return(0);
}
Mozart
39 / 17 / 1
Регистрация: 21.08.2009
Сообщений: 63
11.09.2009, 12:14 #9
C++
1
2
for ( n = 1; n <= 20; n++ ) 
                if ( (n*n*n) % 2 == 0 )
Я бы это заменил на:
C++
1
for ( n = 2; n <= 20; n+=2 )
easybudda
Модератор
Эксперт CЭксперт С++
9530 / 5523 / 932
Регистрация: 25.07.2009
Сообщений: 10,606
11.09.2009, 12:33 #10
Mozart, ну написано у него в условии
Цитата Сообщение от dirn Посмотреть сообщение
для N = 1. . . 20
вот я так и сделал. А по логике-то только чётные перебирать конечно быстрее, кто бы спорил.

Добавлено через 12 минут
zim22 Somebody спасибо скажите - решение он написал
Mozart
39 / 17 / 1
Регистрация: 21.08.2009
Сообщений: 63
11.09.2009, 12:34 #11
(n*n*n) % 2 == 0 ну тут тоже можно упростить оставив только n =))
easybudda
Модератор
Эксперт CЭксперт С++
9530 / 5523 / 932
Регистрация: 25.07.2009
Сообщений: 10,606
11.09.2009, 12:39 #12
Цитата Сообщение от Mozart Посмотреть сообщение
(n*n*n) % 2 == 0 ну тут тоже можно упростить оставив только n =))
кстати да
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.09.2009, 12:39
Привет! Вот еще темы с ответами:

Вывод N целых чисел, сумма которых равна 0 - C++
Дано число N, кратное 4. Требуется написать программу, выводящую N целых чисел, сумма которых равна 0, а произведение равно N.

Определить количество трехзначных чисел, сумма цифр которых равна n - C++
Вот такую задачку задали в универе: Вообщем,допустим я ввожу число 5,мне нужно чтобы посчитало количество трёхзначных...

Сколько существует двухзначных, положительных чисел, сумма цифр которых равна 15 - C++
Подсчитать, сколько существует двухзначных, положительных чисел, сумма цифр которых равна 15. Вывести их на экран.

Найти количество чисел в интервале [A, B], у которых сумма цифр равна 8 или 12 - C++
Помогите, плиз. Написать программу, которая находит сумму цифр числа и с ее помощью решить след задачу: даны числа А и В. найти кол-во...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.09.2009, 12:39
Ответ Создать тему
Опции темы

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