UniLecs #Task. Get Numbers with Even Number of Digits

Albert Davletov
UniLecs
Published in
2 min readJan 31, 2021

Задача: дан массив целых чисел, необходимо вернуть кол-во чисел с четным кол-вом цифр.

Входные данные: arr — массив целых чисел в диапазоне от 1 до 10⁵, размер массива от 1 до 500.

Вывод: кол-во чисел с четным кол-вом цифр.

Примеры:

  1. arr = [11, 234, 1, 5, 6785];
    Output: 2 (числа 11 и 6785 содержат четное кол-во цифр)
  2. 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 можно даже не проверять, кол-во цифр в них нечетно.

Реализация

C#

https://gist.github.com/unilecs/d6680831fb249e2e76e5c6b4cc7467ae

Play-test

https://dotnetfiddle.net/8Z7GDq

--

--