Проверьте, является ли число, образованное объединением всех элементов массива, числом Харшада или нет.

Опубликовано: 2 Сентября, 2022

Для данного массива arr[] , состоящего из N целых чисел, задача состоит в том, чтобы проверить, является ли число, образованное объединением всех элементов массива, числом Харшада или нет.

Примеры:

Input: arr[] = { 1, 35, 69, 60}
Output: Yes
Explanation:
The number formed by concatenating array elements is “1356960”.
Sum of digits of the number = 1 + 3 + 5 + 6 + 9 + 6 + 0 = 30. 
Since, the number is divisible by sum of its digits, the number is a “Harshad number”.

Input: arr[] = {1, 563, 9, 59, 7, 8}
Output: Yes

Подход: идея состоит в том, чтобы преобразовать все элементы массива в их эквивалентные строки и объединить эти строки. Выполните следующие шаги, чтобы решить проблему:

  1. Пройдите по массиву arr[] и преобразуйте каждый элемент массива в эквивалентную ему строку.
  2. Объедините все строки в переменной, скажем, S.
  3. Инициализируйте переменную, скажем, sum, для хранения суммы цифр сгенерированного числа.
  4. Пройдите строку S и обновите сумму как sum += int (s[i]).
  5. Инициализируйте переменную, скажем, N = 0, для хранения числа, полученного путем объединения всех символов строки S mod sum.
  6. Пройдите строку S и обновите N как N = (N * 10 + int (S[i])) % sum.
  7. Выведите Да, если N = 0.
  8. В противном случае выведите Нет .

Ниже приведена реализация вышеуказанного подхода:

Временная сложность: O(N)
Вспомогательное пространство: O(N)