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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Montanaa
5 / 5 / 1
Регистрация: 21.03.2011
Сообщений: 79
#1

Количество слагаемых - C++

12.10.2011, 15:33. Просмотров 1249. Ответов 21
Метки нет (Все метки)

Друзья, если вам не трудно, помогите пожалуйста сделать вот такую задачу:
Дано число 'N', нужно представить его в виде 'n' любых слагаемых.
Я не знаю как это нормально объяснить, но например вот так:
N = 21; n = 3; Result = 6 + 6 + 9; или N = 25; n = 5; Result = 5 + 5 + 5 + 5 + 5;
или так
N = 16; n = 2; Result = 8 + 8;
Спасибо огромное заранее !
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.10.2011, 15:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Количество слагаемых (C++):

Подсчитать количество слагаемых - C++
Всем добрый день. Помогите, пожалуйста защитить лабу. По заданию: Дано вещественное число А>0. Найти среди чисел 1, 1+1/2,...

Количество слагаемых числами 1, 2, 3 - C++
Помогите с решением. Задача: Дано число n, отобразить количество его всевозможных слагаемых числами 1 ,2, 3. Заранее спасибо.

Вычислить с точностью ε сумму и указать количество учтенных слагаемых - C++
Даны действительные x,ε (x =! 0, 1>ε>0) и целые k,a,n числа. Вычислить с точностью ε сумму и указать количество учтенных слагаемых....

Вычислить с точностью ε сумму и указать количество учтенных слагаемых - C++
Даны действительные x,ε (x≠0, ε>0) и целые k,a,n числа. Вычислить с точностью ε сумму и указать количество учтенных слагаемых. Считать,...

Посчитать сумму с заданной точностью eps и указать количество учтенных слагаемых - C++
№1 задано действительные числа x,a,e(epselon)(x!=0,a!=0,e>0). Сделать программу которая считает суму с заданной точностью e(epselon) и...

Дано действительное число х. Вычислить сумму ряда с точностью и указать количество слагаемых - C++
Дано действительное число х (0<x<=1). Вычислить сумму ряда с точностью e=10-6 и указать количество слагаемых. Считать, что требуемая...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Montanaa
5 / 5 / 1
Регистрация: 21.03.2011
Сообщений: 79
12.10.2011, 22:18  [ТС] #16
Добавлено через 5 минут
Цитата Сообщение от Olga_ Посмотреть сообщение
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
#include <iostream>
#define MIN(x, y)  ((x) < (y) ? (x) : (y))
long a[1000];
 
void Partition(long n, long high, long pos)
{
   long i;
   if (n > 0)
   {
       for (i = 1; i <= high; i++)
       {
          a[pos] = i;
          Partition(n - i, MIN(i, n - i), pos + 1);
       }
   }
   else
   {
       for (i = 0; i < pos - 1;  i++)
          std::cout << a[i] << "+";
       std::cout << a[i] << "\n";
   }
}
 
int main()
{
    long n;
    std::cin >> n;
    Partition(n, n - 1, 0);
    return 0;
}
для заданного 'n' !
т.е. число N на n слагаемых. все возможные решения
0
Olga_
841 / 183 / 16
Регистрация: 01.08.2011
Сообщений: 502
12.10.2011, 22:22 #17
Цитата Сообщение от Montanaa Посмотреть сообщение
для заданного 'n' !
т.е. число N на 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
26
27
28
29
30
31
#include <iostream>
#define MIN(x, y)  ((x) < (y) ? (x) : (y))
long a[1000];
 
long N, k;
void Partition(long n, long high, long pos)
{
   long i;
   if (n > 0)
   {
       for (i = 1; i <= high; i++)
       {
          a[pos] = i;
          Partition(n - i, MIN(i, n - i), pos + 1);
       }
   }
   else if (pos == k)
   {
       for (i = 0; i < pos - 1;  i++)
          std::cout << a[i] << "+";
       std::cout << a[i] << "\n";
   }
}
 
int main()
{
    std::cin >> N >> k;
    Partition(N, N - 1, 0);
    std::cin.get();
    return 0;
}
1
Montanaa
5 / 5 / 1
Регистрация: 21.03.2011
Сообщений: 79
12.10.2011, 22:29  [ТС] #18
сорри )
0
Olga_
841 / 183 / 16
Регистрация: 01.08.2011
Сообщений: 502
12.10.2011, 22:31 #19
Такой алгоритм вам подходит?, а то могу еще трансформировать, мне не жалко
1
Montanaa
5 / 5 / 1
Регистрация: 21.03.2011
Сообщений: 79
12.10.2011, 22:39  [ТС] #20
Цитата Сообщение от Olga_ Посмотреть сообщение
Такой алгоритм вам подходит?, а то могу еще трансформировать, мне не жалко
Спасибо огромное)
0
Montanaa
5 / 5 / 1
Регистрация: 21.03.2011
Сообщений: 79
20.10.2011, 17:57  [ТС] #21
Цитата Сообщение от Olga_ Посмотреть сообщение
Такой алгоритм вам подходит?, а то могу еще трансформировать, мне не жалко
А как здесь посчитать количество всех разложений? Вот это если можно трансформировать)))

Добавлено через 17 часов 14 минут
ребят допишите пожалуйста, кому не трудно (
0
Olga_
841 / 183 / 16
Регистрация: 01.08.2011
Сообщений: 502
21.10.2011, 09:31 #22
Цитата Сообщение от Montanaa Посмотреть сообщение
А как здесь посчитать количество всех разложений? Вот это если можно трансформировать)))
Вот:
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
#include <iostream>
#define MIN(x, y)  ((x) < (y) ? (x) : (y))
long a[1000];
long count;
 
long N, k;
void Partition(long n, long high, long pos)
{
   long i;
   if (n > 0)
   {
       for (i = 1; i <= high; i++)
       {
          a[pos] = i;
          Partition(n - i, MIN(i, n - i), pos + 1);
       }
   }
   else if (pos == k)
   {
       count++;
       for (i = 0; i < pos - 1;  i++)
          std::cout << a[i] << "+";
       std::cout << a[i] << "\n";
   }
}
 
int main()
{
    std::cin >> N >> k;
    Partition(N, N - 1, 0);
    std::cout << "count = " << count;
    std::cin.get();
    return 0;
}
А если нужны все-все разложения числа 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
26
27
28
29
30
31
32
33
34
#include <iostream>
#define MIN(x, y)  ((x) < (y) ? (x) : (y))
long a[1000];
long count;
 
void Partition(long n, long high, long pos)
{
   long i;
   if (n > 0)
   {
       for (i = 1; i <= high; i++)
       {
          a[pos] = i;
          Partition(n - i, MIN(i, n - i), pos + 1);
       }
   }
   else
   {
       count++;
       for (i = 0; i < pos - 1;  i++)
          std::cout << a[i] << "+";
       std::cout << a[i] << "\n";
   }
}
 
int main()
{
    long n;
    std::cin >> n;
    Partition(n, n - 1, 0);
    std::cout << "count = " << count+1;
    std::cin.get();
    return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.10.2011, 09:31
Привет! Вот еще темы с ответами:

C++ - S=1+3+5+7+ …, всего n слагаемых - C++
S=1+3+5+7+ …, всего n слагаемых

Вычислить сумму N слагаемых - C++
Вычислить сумму 1 - \frac{1}{2} + \frac{1}{3} - \frac{1}{4} + ... n слагаемых Заранее всем, кто откликнулся, ОГРОМНОЕ спасибо

Натуральный логарифм N слагаемых - C++
Помогите написать код на формулу: S=√x/ln⁡x +√(x^2 )/ln⁡〖2*x〗 +√(x^3 )/ln⁡〖3*x〗 +⋯ для N слагаемых

С++ Вычислить сумму из N слагаемых - C++
Здравствуйте! Решаю вот задачу,что то не выходит Подскажите,что не так(ошибка в строках 44 ,46 ,переменная i -не обьявлена) ...


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

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

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