Dodatnią liczbę całkowitą nazywamy szaloną, jeśli zawiera co najwyżej i cyfr równych i (dla i=1..9) (innymi słowy, jeśli co najwyżej jedna z jej cyfr to 1 oraz jeśli co najwyżej 2 z jej cyfr to 2 itd.).
Twoim zadaniem będzie znalezienie dla danych dwóch liczb całkowitych a,b liczby szalonych liczb nie mniejszych niż a oraz nie większych niż b.
Zadanie

Napisz program, który:
* wczyta ze standardowego wejścia liczby naturalne a,b,
* wypisze na standardowe wyjście liczbę szalonych liczb z przedziału [a,b].

Wejście
W jedynym wierszu wejścia znajdują się dwie liczby całkowite a, b
(1<=a<=b<=2000 000 000) oddzielone pojedynczym odstępem.

Wyjście
W jedynym wierszu wyjścia należy wypisać liczbę szalonych liczb z przedziału [a,b].

Przykład
Dla danych wejściowych:
1 11
poprawną odpowiedzią jest:
10

1

Odpowiedzi

2010-02-06T23:44:33+01:00
#include <stdio.h>

int main()
{
long a,b;
int tab[9], wynik = 0;
scanf("%ld %ld", &a, &b);

for(;a<=b; a++)
{
int i;
for(i=0; i<9; i++)
tab[i] = 0;

long temp = a;
int odp = 1;
while(temp != 0)
{
int cyfra = temp%10;
if(cyfra > 0) tab[cyfra-1]++;
temp /= 10;
}

for(i=0; i<9; i++)
{
if(tab[i] > i+1)
{
odp = 0;
break;
}
}
if(odp == 1)
wynik++;
}

printf("%d\n", wynik);
return 0;
}