Найдите количество троек натуральных чисел a, b, c, что a + b + c = n - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Не могу сосредоточиться, помогите пожалуйста. Дано число n. Найдите количество троек натуральных чисел a, b, c таких, что a + b + c = n, a <= b <= c. На вход программе подается натуральное n <= 30 000. Выведите искомое число.

Решение задачи: «Найдите количество троек натуральных чисел a, b, c, что a + b + c = n»

textual
Листинг программы
function P(n, k : integer) : integer;
begin
  if k = 1 then result := 1
  else if n = k then result := 1
  else if n < k then result := 0
  else result := p(n - 1, k - 1) + p(n - k, k)
end;
begin
  var n := ReadlnInteger();
  writeln(p(n, 3)); // количество разбиений n на 3 слагаемых
end.

Объяснение кода листинга программы

В этом коде функция P вычисляет количество разбиений числа n на k слагаемых. Если k=1, то число n может быть разбито только одним способом, поэтому P(n,1)=1. Если n=k, то также может быть только один способ разбить его на равные части, поэтому P(n,k)=1. Если n<k, то число n не может быть разбито на k слагаемых, поэтому P(n,k)=0. В остальных случаях используется рекурсия для вычисления количества разбиений для n-1 и k-1, а затем результат увеличивается на количество разбиений для n-k. В основной части кода считывается число n и выводится количество разбиений на 3 слагаемых.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.571 из 5
Похожие ответы