Hackerrank - Find Digits Solution
An integer is a divisor of an integer if the remainder of .
Given an integer, for each digit that makes up the integer determine whether it is a divisor. Count the number of divisors occurring within the integer.
Note: Each digit is considered to be unique, so each occurrence of the same digit should be counted (e.g. for , is a divisor of each time it occurs so the answer is ).
Complete the findDigits function in the editor below. It should return an integer representing the number of digits of that are divisors of .
findDigits has the following parameter(s):
- n: an integer to analyze
The first line is an integer, , indicating the number of test cases.
The subsequent lines each contain an integer, .
For every test case, count the number of digits in that are divisors of . Print each answer on a new line.
2 12 1012
The number is broken into two digits, and . When is divided by either of those two digits, the remainder is so they are both divisors.
The number is broken into four digits, , , , and . is evenly divisible by its digits , , and , but it is not divisible by as division by zero is undefined.
Solution in Python
from collections import Counter def findDigits(n): c=0 for x,y in Counter(str(n)).items(): if int(x) and not n%int(x): c+=y return c for _ in range(int(input())): print(findDigits(int(input())))
Solution using list comprehension
from collections import Counter def findDigits(n): return sum(y for x,y in Counter(str(n)).items() if int(x) and not n%int(x)) for _ in range(int(input())): print(findDigits(int(input())))