8535. Минимальное число

 

Составьте и выведите минимальное число из тех цифр, которые НЕ встречаются во входной строке. Ноль не используется. Если во входных данных встречаются все цифры от 1 до 9, то следует вывести 0.

 

Вход. Входная строка содержит любой текст.

 

Выход. Выведите минимальное число из цифр, не встречающихся во входной строке. Если во входных данных встречаются все цифры от 1 до 9, то следует вывести 0.

 

Пример входа

Пример выхода

1734 is not 384?

2569

 

 

РЕШЕНИЕ

строки

 

Анализ алгоритма

Подсчитаем сколько раз каждая цифра встречается в тексте (сортировка подсчетом). Далее переберем все символы от ‘1’ до ‘9’ и выведем в возрастающем порядке те, которые не встречались в тексте. Если все цифры встречались в тексте, то выводим 0.

 

Реализация алгоритма

Читаем входной текст до конца файла посимвольно. Подсчитываем количество раз, которое каждый символ встречается в тексте.

 

memset(m, 0, sizeof(m));

while(scanf("%c", &ch) == 1)

  m[ch]++;

 

Перебираем цифры от 1 до 9. В переменной cnt подсчитываем количество таких цифр, которые не встречались в тексте.

 

cnt = 0;

for (i = '1'; i <= '9'; i++)

  if (m[i] == 0)

  {

    cnt++;

 

Выводим цифру, которой нет во входном тексте.

 

    printf("%c", i);

  }

 

Если в тексте встречались все цифры (cnt = 0), то выводим 0.

 

if (cnt == 0) puts("0");