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

Ответы на вопрос

Ответ:
например число 123 - 6 комбинаций, 120 - 4 комбинации.
также работает с 4значными
Объяснение:
program prog;
var num,i,j,tmp:integer;
arr:array [1..4] of integer=(-1,-1,-1,-1);
zero: boolean;
begin
writeln('Input number:');
readln(num);
i:=1;j:=1;zero:=false;
while num<>0 do begin
tmp:=num mod 10;
if (tmp<>arr[1]) and (tmp<>arr[2]) and (tmp<>arr[3]) and (tmp<>arr[4]) then begin
arr[i]:=tmp;
if (zero=false) and (tmp=0) then zero:=true;
write(i,':');
writeln('arr[i]=',arr[i]);
writeln('num=',num);
i:=i+1
end;
num:=num div 10;
end;
num:=1;tmp:=1;
i:=i-1;
for j:=1 to i do num:=num*j;
if zero=true then begin
for j:=1 to i-1 do tmp:=tmp*j;
num:=num-tmp;
end;
writeln('vsego chisel =',num);
end.



Для решения этой задачи можно воспользоваться следующим алгоритмом на языке Pascal:
Считать четырёхзначное число с клавиатуры.
Инициализировать массив a, в котором будем хранить информацию о том, сколько раз встречается каждая цифра в числе. Массив a будет иметь 10 элементов (от 0 до 9), и изначально все его элементы будут равны нулю.
Пройти по каждой цифре в числе и увеличить соответствующий элемент массива a на 1.
Вычислить количество различных чисел, которые можно составить из цифр данного числа, используя перестановки с повторениями. Для этого можно воспользоваться формулой для числа перестановок с повторениями:
P(n; n1, n2, ..., nk) = n! / (n1! * n2! * ... * nk!)
Где n - общее количество цифр, n1, n2, ... nk - количество различных цифр.
Вывести результат.
Вот пример кода на языке Pascal:
pascalprogram CountUniqueNumbers; var num: integer; a: array[0..9] of integer; i, uniqueCount, totalDigits: integer; factorial: longint; begin for i := 0 to 9 do a[i] := 0; writeln('Введите четырёхзначное число: '); readln(num); totalDigits := 0; uniqueCount := 1; while num > 0 do begin i := num mod 10; a[i] := a[i] + 1; num := num div 10; totalDigits := totalDigits + 1; end; for i := 0 to 9 do begin if a[i] > 1 then begin factorial := 1; for j := 1 to a[i] do factorial := factorial * j; uniqueCount := uniqueCount * factorial; end; end; // Рассчитываем количество различных чисел uniqueCount := uniqueCount * totalDigits; writeln('Количество различных чисел, которое можно составить: ', uniqueCount); end.
Этот код сначала считывает четырёхзначное число, затем подсчитывает, сколько раз каждая цифра встречается в числе, и вычисляет количество различных чисел, которые можно составить из этих цифр. Результат выводится на экран.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili