Даны числа от одного до 10 000, надо в выходном файле написать количество натуральных чисел меньших данного, у которого все цифры десятичной записи различны — Pascal(Паскаль)

var N:integer;
i,kr:integer;
function RazCif(a:longint):boolean; {функция определяет разные цифры или нет}
var k,p,t:integer;b:set of 0..9;
begin
b:=[];t:=0;p:=0;
while a>0 do
    begin
      k:=a mod 10; {отделяем очередную цифру с конца}
      t:=t+1; {считаем ее}
      if not (k in b)then {если такой цифры нет во множестве, добавляем}
          begin
             include(b,k);
             p:=p+1; {считаем, сколько добавили}
          end;
       a:=a div 10; {пишем число без последней цифры и снова все повторяем, пока число не кончится}
    end;
if t<>p then RazCif:=false {если число цифр общее совпадает с количеством цифр во мнлжестве, значит все цифры разные}
else RazCif:=true;
end;
begin
clrscr;
kr:=0;
write('N=');readln(N);
for i:=1 to N-1 do
if RazCif(i)then kr:=kr+1;
write('Kol chis s rszn chifr=',kr);
readln
end.

Leave a Comment

52 − = 49