Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 26.02.2018
Сообщений: 10

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

28.03.2018, 08:16. Показов 1573. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ввести с клавиатуры натуральное число n(n>=5). Получить все пятерки натуральных чисел x1,x2,x3,x4,x5 такие, что x1>=x2>=x3>=x4>=x5 и x1+….+x5=n.
Помогите решить задачу через функцию,пожалуйста!
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
#include <iostream>  
#include <math.h> 
using namespace std;
int main(){
    int n, x1, x2, x3, x4, x5;;
    cout << "Vvedite luboe 4islo ot 5 " << endl;
    cin >> n;
    if (n >= 5)
        for (x5 = 1; x5 <= n - 4; x5++)
 
            for (x4 = x5; x4 <= n - 4; x4++)
 
                for (x3 = x4; x3 <= n - 4; x3++)
 
                    for (x2 = x3; x2 <= n - 4; x2++)
 
                    {
                        x1 = n - x2 - x3 - x4 - x5;
                        if (x1 > x2 - 1)
                            cout << "x5=" << x5 << " x4=" << x4 << " x3=" << x3 << " x2=" << x2 << " x1=" << x1 << endl;
                    }
    else
        cout << "Prosilos' je ot 5..." << endl;
    system("pause");
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.03.2018, 08:16
Ответы с готовыми решениями:

Определить количество трехзначных натуральных чисел, сумма цифр которых равна заданному числу N
Определить количество трехзначных натуральных чисел, сумма цифр которых равна заданному числу N.

Определить количество натуральных трехзначных чисел, сумма цифр которых равна заданному числу N
1. Определить количество натуральных трехзначных чисел, сумма цифр которых равна заданному числу N.

Определить количество трёхзначных натуральных чисел сумма цифр которых равна заданному числу
Всем Привет! Помогите пожалуйста написать простенькую программу без сильно замороченного кода на с++ , заранее спасибо!!! Сама...

5
 Аватар для Лемур
17 / 17 / 13
Регистрация: 06.02.2014
Сообщений: 114
28.03.2018, 08:51
так?
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
#include <iostream>
#include <math.h>
using namespace std;
 
int fu(int n, int x2, int x3, int x4, int x5)
{
    return n - x2 - x3 - x4 - x5;
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int n, x1, x2, x3, x4, x5;;
    cout << "Введите число от 5 " << endl;
    cin >> n;
    if (n >= 5)
        for (x5 = 1; x5 <= n - 4; x5++)
 
            for (x4 = x5; x4 <= n - 4; x4++)
 
                for (x3 = x4; x3 <= n - 4; x3++)
 
                    for (x2 = x3; x2 <= n - 4; x2++)
 
                    {
                        x1=fu(n,x2,x3,x4,x5);
                        if (x1 > x2 - 1)
                            cout << "x5=" << x5 << " x4=" << x4 << " x3=" << x3 << " x2=" << x2 << " x1=" << x1 << endl;
                    }
    else
        cout << "Просилось же от 5..." << endl;
    system("pause");
}
Добавлено через 18 минут
или так
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
#include <iostream>
#include <math.h>
using namespace std;
 
void fu(int n, int x1, int x2, int x3, int x4, int x5)
{
    if (n >= 5)
    {
        for (x5 = 1; x5 <= n - 4; x5++)
        {
            for (x4 = x5; x4 <= n - 4; x4++)
            {
                for (x3 = x4; x3 <= n - 4; x3++)
                {
                    for (x2 = x3; x2 <= n - 4; x2++)
                    {
                        x1= n - x2 - x3 - x4 - x5;
                        if (x1 > x2 - 1)
                            cout << "x5=" << x5 << " x4=" << x4 << " x3=" << x3 << " x2=" << x2 << " x1=" << x1 << endl;
                    }
                }
            }
        }
    }
    else
    {
        cout << "Просилось же от 5..." << endl;
    }
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int n, x1, x2, x3, x4, x5;
    cout << "Введите число от 5 " << endl;
    cin >> n;
    fu(n,x1,x2,x3,x4,x5);
    system("pause");
}
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
28.03.2018, 12:21
LemurDC, Ваши оба решения, скорее всего, верные (подробно коды не анализировал, но я вам верю). Но уж больно скушные. А если слагаемых не 5, а 7? Или 10? Что, всю эту кишку вложенных циклов переписывать?
Есть более интересный подход, и при любом n и k можно обойтись парой циклов.
Для начала надо выяснить, является ли 0 натуральным числом. В математике есть 2 мнения на этот счет. Удобнее решать, если 0 входит. Ежели нет, но сводим к решению в неотрицательных числах, заменяя n на n-k (единички добавим при выводе)
Идея такая. Для начала полагаем x[0] = n, остальные нули. Представим все решение в виде столбиков не увеличивающейся высоты. И идем справа налево, пока не находим столбик, с которого можно снять единичку. И перераспределяем камешки правее этой точки, стараясь положить на самый левый столбик побольше. Для n = 7, k=4 это будет выглядеть так
7 0 0 0
6 1 0 0
5 2 0 0
5 1 1 0
4 3 0 0
4 2 1 0
4 1 1 1
3 3 1 0
3 2 2 0
3 2 1 1
2 2 2 1
Где-то на форуме эта задача (именно в общем виде) решалась...

Добавлено через 3 минуты
Получить все пятерки натуральных чисел удовлетворяющих заданному условию
это не решение, но тема Один в Один. Найдя хорошее решение, мы убьем как минимум 2-х зайцев
0
 Аватар для Лемур
17 / 17 / 13
Регистрация: 06.02.2014
Сообщений: 114
28.03.2018, 12:29
Байт, если честно, я и сам не читал код. Просто взял код ТСа и добавил функцию.
Цитата Сообщение от Байт Посмотреть сообщение
Получить все пятерки натуральных чисел удовлетворяющих заданному условию
это не решение, но тема Один в Один. Найдя хорошее решение, мы убьем как минимум 2-х зайцев
сейчас буду читать и вникать, спасибо)
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
28.03.2018, 12:37
LemurDC, Вот покопался немного...
Разбиение числа n на k слагаемых
Кажется, решено.
Рекурсия рулит!
0
0 / 0 / 0
Регистрация: 26.02.2018
Сообщений: 10
28.03.2018, 16:07  [ТС]
А так и должно быть???
Миниатюры
Получить все пятерки натуральных чисел сумма которых равна заданному числу  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.03.2018, 16:07
Помогаю со студенческими работами здесь

Получить все четырехзначные числа, сумма цифр которых равна заданному числу n
Здраствуйте, помогите сделать лабораторную, программирование мне не понадобиться так что не хочу забивать этим голову, зарание спасибо. ...

Получить все трехзначные натуральные числа, сумма цифр которых равна заданному числу
очень срочно. нужна программа для вот этой задачи, если нетрудно, то с комментариями Дано натуральное число n (n&lt;27). Получить все...

Вывести все четырёхзначные числа, сумма чисел которых равна заданному числу
#include &lt;iostream&gt; using namespace std; int main(){ int N, i, j; cout&lt;&lt;&quot;Vvedite nujnoe chislo \n&quot;; cin&gt;&gt;N; ...

Получить матрицу С удвоив все значения матрицы А, сумма индексов которых меньше или равна заданному числу В
Вот сама задача: задано целочисленный массив А размера N x N. Получить массив С удвоив все значения массива А, сумма индексов которых...

Найти 3 натуральных числа сумма квадратов которых равна заданному числу
Дано натуральное n. Указать x,y,z таких натуральных чисел, что n=x2 +y2 +z2 и x&lt;=y&lt;=z , используя перебор значений.


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru