Условие задачи
Дано натуральное число $latex N$. Сколько различных цифр встречается в его десятичной записи?
Тесты
Входные данные: натуральное число $latex N$
Выходные данные: количество различных цифр в десятичной записи числа $latex N$
№ | Входные данные | Выходные данные |
1 | 1234567890 | 10 |
2 | 43352 | 4 |
3 | 10101 | 2 |
4 | 1 | 1 |
Код
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
import java.util.Scanner; public class Main { public static void main (String[] args) { long n; int differentDigitsCount = 0; int[] digitsCount = new int[10]; Scanner scanner = new Scanner(System.in); n = scanner.nextLong(); while (n!=0) { digitsCount[(int)(n%10)]++; n/=10; } for (int i = 0; i < 10; i++) { if (digitsCount[i] > 0) differentDigitsCount++; } System.out.println(differentDigitsCount); } } |
Код доступен на ideone
Пояснение
Для хранения заданного числа $latex N$ будем использовать переменную n типа long, которая будет проинициализирована значением из стандартного потока ввода, а для хранения результата — переменную differentDigitsCount типа int, которую проинициализируем числом 0. Переменные объявляются в начале программы. Для определения количества различных цифр будем использовать массив типа int из 10 элементов, где каждый элемент будет соответствовать количеству вхождений одной из цифр в заданное число . Элементы массива инициализируются числом 0 по умолчанию. В цикле поочередно определяется разряд — последний разряд числа, и соответствующий элемент массива инкрементируется, затем это число разделяется на 10, чтобы «отбросить» последний разряд. Результат работы программы — вывод значения переменной differentDigitsCount, которое получается путем подсчета ненулевых элементов массива в цикле.