Паскаль. Основы программирования



              

Размещения - часть 3


Процедура

размещений из n элементов по k элементов.

Procedure placement(n, k : integer;  var

r : longint);

    var

       i : integer;

    begin

       r := 1;

       for i := 1 to k do r := r*(n - k + i)

    end;

Программа

 

Program Problem1;

   uses WinCrt;

   var

     n, k, r : longint;

{----------------------------------------------------------------------------------------}

{ Процедура вычисления числа размещений из n по k }

   Procedure placement(n, k : integer;  var

r : longint);

      var

        i : integer;

      begin

        r := 1;

        for i := 1 to k do r := r*(n - k + i)

      end;

{----------------------------------------------------------------------------------------}

  begin

     write('Введите число всех предметов '); readln(n);

     write('Введите число уроков в день '); readln(k);

     Placement(n, k, r);

     writeln('Число вариантов расписания равно ', r)

   end.

Пример 2. Сколько различных четырехзначных чисел можно написать при помощи цифр 0, 1, 2, ..., 9?

Рассуждения могут быть очень простыми. Нам надо выяснить сколькими способами можно выбрать по 4 цифры из 10, причем важен порядок расположения цифр, так как 1234 и 2134 дают разные числа. Значит необходимо определить число размещений из 10 элементов по 4,

.

Но из этого количества чисел мы должны исключить те, которые начинаются цифрой 0, например, 0123, 0213 и т.п. Эти числа уже не будут четырехзначными.

Сколько таких чисел? Да столько, сколько трехзначных чисел получится из 9 цифр (без нуля), т. е. равное числу размещений из 9 элементов по 3,

.

Окончательное количество четырехзначных чисел, которые можно составить из 10 цифр равно разности:

.

Программа

Program Problem2;

     uses WinCrt;

     var

        n, k, a, a1 : longint;

{----------------------------------------------------------------------------------------}

     Procedure placement(n, k : integer;  var r : longint);

        var

           i : integer;

        begin

           r := 1;

           for i := 1 to k do r := r*(n - k + i)

        end;

{----------------------------------------------------------------------------------------}

    begin

       write('Введите заданное ко-во цифр '); readln(n);

       write('Введите ко-во цифр, из скольких составляется число '); readln(k);

       placement(n, k , a);

       placement(n - 1, k - 1, a1);

       writeln('Число различных 4-х знач. чисел, которые можно');

       writeln('написать при помощи цифр 0, 1, 2, .., 9 равно ', a - a1)

    end.




Содержание  Назад  Вперед