UniLecs #Task. Get Numbers with Even Number of Digits
Задача: дан массив целых чисел, необходимо вернуть кол-во чисел с четным кол-вом цифр.
Входные данные: arr — массив целых чисел в диапазоне от 1 до 10⁵, размер массива от 1 до 500.
Вывод: кол-во чисел с четным кол-вом цифр.
Примеры:
- arr = [11, 234, 1, 5, 6785];
Output: 2 (числа 11 и 6785 содержат четное кол-во цифр) - arr = [123, 456, 789, 1001];
Output: 1 (только 1001 содержит четное кол-во цифр)
Разбор
Решение довольно примтивное, проходим по массиву и считаем кол-во цифр в каждом элементе.
Так как элементы массива находятся в диапазоне от 1 до 10⁵, то достаточно проверить делимость на 10⁵, 10⁴, 10³, 10², 10¹.
Если число делится на 10⁵ (значение больше 1), значит это число от 100000 до 999999 и кол-во цифр в нем четно. Если число меньше 10⁵, то проверяем делимость на 10⁴ и так далее.
- Arr[i] / 10⁵ != 0 -> arr[i] содержит четное кол-во цифр;
- Arr[i] / 10⁴ != 0 -> arr[i] содержит нечетное кол-во цифр;
- Arr[i] / 10³ != 0 -> arr[i] содержит четное кол-во цифр;
- Arr[i] / 10² != 0 -> arr[i] содержит нечетное кол-во цифр;
- Arr[i] / 10¹ != 0 -> arr[i] содержит четное кол-во цифр;
- Числа меньше 10 можно даже не проверять, кол-во цифр в них нечетно.
Реализация
https://gist.github.com/unilecs/d6680831fb249e2e76e5c6b4cc7467ae