function DifNum(a: integer): integer; var se: set of integer; i: integer; begin while a > 0 do begin if a mod 10 in se then begin DifNum := 0; exit; end else include(se, a mod 10); a := a div 10; end; DifNum := 1; end;
begin read(l, r); for i := l to r do counter += DifNum(i); writeln(counter); end.
//Альтернативное решение на Паскале
Var l,r:integer; begin read(l,r); writeln(range(l,r).where(x -> x.tostring.toarray.distinct.count=length(x.tostring)).Count); end.
Объяснение, как складывать числа в системе по основанию n (у нас n=5) Сложение производим "в столбик" в привычной нам десятичной системе счисления и начинаем с младших (правых) разрядов. 2+1=3. Если сумма меньше n (в данном случае меньше, т.к. 3<5), то записываем её "как есть" и переходим к следующему разряду. 4+2=6. Тут сумма больше n (6>5), поэтому вычитаем из этой суммы n (т.е. 5) и получаем 6-5=1. Эту единичку мы записываем, а за то, что вычли пятерку (т.е. n), пишем "один в уме", т.е. +1 переходит в следующий разряд. 4+1+1=6 (4+1 было, и еще +1 от переноса). Снова 6>5, как описано выше, снова 6-5=1, снова 1 пишем и +1 в следующий разряд. +1 и даст 1, поскольку складывать больше нечего. ответ: 1113
ответ: 8 и есть
Объяснение: