A302. Количество различных цифр числа в его десятичной записи

Задача

Дано натуральное число [latex]N[/latex]. Сколько различных цифр встречается в его десятичной записи?

Входные данные

Натуральное число [latex]N[/latex].

Выходные данные

Количество различных цифр [latex]sum[/latex].

Тесты

Входные данные Выходные данные
[latex]N[/latex] [latex]sum[/latex]
12345678900987654321 sum:10
302 sum:3

Код программы с использованием deque

 

Решение

Создадим дэк [latex]folder[/latex] в котором будем хранить различные цифры десятичной записи. Добавляем первую цифру числа [latex]N[/latex] в дэк и делим [latex]N[/latex] на [latex]10[/latex]. Следующие цифры мы будем добавлять после проверки на отсутствие таких же в [latex]folder[/latex], если цифры совпадают заканчиваем цикл. В конце выводим размер [latex]folder[/latex] который и является [latex]sum[/latex].

Код программы с использованием массива

Решение

Создадим массив [latex]folder[/latex] в котором будем хранить кол-во встреч для различных цифр десятичной записи в соответствующих позициях массива. Увеличиваем на один значения соответствующей позиции массива и делим [latex]N[/latex] на [latex]10[/latex]. Для определения [latex]sum[/latex] делаем цикл и проверяем ненулевые значения массива [latex]folder[/latex].

Ссылки

Ideone через deque;
Ideone через массив;
Условие задачи (стр. 126).

Related Images:

2 thoughts on “A302. Количество различных цифр числа в его десятичной записи

  1. Это неудачное решение. Каждую новую цифру Вы сравниваете с уже имеющимися. Это слишком долго. Да и выбор деки в качестве хранилища ничем не объяснён.

    Хочу дать небольшую подсказку в форме вопроса. Сколько всего разных цифр может быть в числе?

    • Да! Именно это я и имел в виду.
      Хорошо.
      Если бы мы не знали что всего 10 вариантов, то нам нужно было бы использовать в качестве контейнера не массив, а что-то не допускающее повторов. Например, множество. В С++ это может быть контейнер set.

Добавить комментарий