Регистрация
Войти
Стать экспертом Правила
Информатика

Просчитайте количество целых чисель от L до R все цифры которых различный

ОТВЕТЫ
# просчитайте количество целых чисель от L до R все цифры которых различный
# Код на ruby 2.2.3p173
def allDifferentNumbers(n)
    a = []
    while n gt; 0 do
        return false if a.include(n 10)
        a lt;lt; n 10
        n = n / 10
    end
    return true
end

def zadanie(l, r)
    k = 0
    for i in l..r
        k += 1 if allDifferentNumbers(i)
    end
    return k
end

# Примеры применения
p zadanie(11, 13)
//PascalABC.NET 3.2 сборка 1318

var
  l, r, counter, i: integer;

function DifNum(a: integer): integer;
var  se: set of integer;
  i: integer;
begin
  while a gt; 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 -gt; x.tostring.toarray.distinct.count=length(x.tostring)).Count);
end.

//Dev-C++ 5.11 (C)

#include lt;stdio.hgt;
#include lt;malloc.hgt;

int DifNum(int);

int main(void)
 {int l,r,counter=0;
 scanf("d d",amp;l,amp;r);
 for(int i=l;ilt;=r;i++)
  counter+=DifNum(i);
 printf("d",counter);
return 0;}

int DifNum(int a)
 {int k=1,*nums;
 nums=(int*)malloc(k*sizeof(int));
 nums[0]=-1;
 while(agt;0)
  {for(int i=0;ilt;k;i++)
   if(a10==nums[i])
    return 0;
  k++;
  nums=(int*)malloc(k*sizeof(int));
  nums[k-1]=a10;
  a/=10;}
 free(nums);
 return 1;}

Пример ввода:
1 12
Пример вывода:
11
276
Контакты
Реклама на сайте
Спрошу
О проекте
Новым пользователям
Новым экспертам