Подсчитать количество N-значных чисел - Pascal

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

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

Составить алгоритм, подсчитывающий количество всех N-значных чисел, сумма цифр которых равна данному числу N.

Решение задачи: «Подсчитать количество N-значных чисел»

textual
Листинг программы
  1. const
  2.   maxValue = 25;
  3. var
  4.   tbl : array[0 .. maxValue, 0 .. maxValue] of qword;
  5.  
  6. function CR(n : integer; s : integer) : qword;
  7. var
  8.   R : qword;
  9.   i : integer;
  10. begin
  11.   if n = 0 then exit(Ord(s = 0));
  12.   R := 0;
  13.  
  14.   if(tbl[n, s] <> qword(-1)) then exit(tbl[n, s]);
  15.  
  16.   for i := 0 to 9 do
  17.     if s - i >= 0 then Inc(R, CR(Pred(n), s - i));
  18.  
  19.   tbl[n, s] := R;
  20.   result := R;
  21. end;
  22.  
  23. function FC(n : integer; s : integer) : qword;
  24. var
  25.   R : qword;
  26.   i : integer;
  27. begin
  28.   fillqword(tbl, sizeof(tbl) div sizeof(qword), qword(-1));
  29.   R := 0;
  30.  
  31.   for i := 1 to 9 do
  32.     if s - i >= 0 then Inc(R, CR(Pred(n), s - i));
  33.   result := R;
  34. end;
  35.  
  36. var n : integer;
  37. begin
  38.   write('n = '); readln(n);
  39.   writeln('result: ', FC(n, n));
  40. end.

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

  1. В первой функции CR мы используем массив tbl размером от 0 до maxValue в обоих направлениях для хранения результатов. Если значение tbl[n, s] не равно qword(-1), то оно уже было учтено, иначе мы добавляем его в R. Мы также используем цикл for для увеличения R на результат вызова функции CR для предыдущего значения n, уменьшенного на i. В конце мы обновляем значение tbl[n, s] на R.
  2. Во второй функции FC мы сначала заполняем массив tbl значениями -1, используя функцию fillqword. Затем мы инициализируем R значением 0. Затем мы используем тот же цикл for, что и в первой функции, но вместо вызова функции CR мы вызываем функцию FC для предыдущего значения n, уменьшенного на i. В конце мы обновляем значение tbl[n, n] на R.
  3. В основной части программы мы считываем значение n с помощью функции readln. Затем мы вызываем функцию FC(n, n) и выводим результат.

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


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

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

9   голосов , оценка 3.778 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы