# Find Digits Hackerrank problem solution

#### Find Digits Hackerrank

Given an integer, N, traverse its digits (d1,d2,…,dn) and determine how many digits evenly divide N(i.e.: count the number of times N divided by each digit di has a remainder of 0). Print the number of evenly divisible digits.

Note: Each digit is considered to be unique, so each occurrence of the same evenly divisible digit should be counted (i.e.: for N=111, the answer is 3).

Input Format

The first line is an integer, T, indicating the number of test cases.
The subsequent T lines each contain an integer, N.

Constraints
1<=T<=15 1<=N<=109
Output Format

For every test case, count and print (on a new line) the number of digits in N that are able to evenly divide N.

Sample Input

2
12
1012

Sample Output

2
3

Explanation

The number 12 is broken into two digits, 1 and 2. When 12 is divided by either of those digits, the calculation’s remainder is 0; thus, the number of evenly-divisible digits in 12 is 2.

The number 1012 is broken into four digits, 1, 0, 1, and 2.1012 is evenly divisible by its digits 1, 1, and , but it is not divisible by 0 as division by zero is undefined; thus, our count of evenly divisible digits is 3.

##### solution

Simply iterate through all digits; if the number is divisible by a digit, increase the counter.

Note that division by 0 is undefined and should be avoided. Otherwise, you’ll get Floating Point Exception error.

Refer to the code for clarity.

``````#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
int n,value,i,j,x,count;
scanf("%d",&n);
if(n<=15 && n>=1) {
for(i=1;i<=n;i++){
count[i]=0;
scanf("%d",&value[i]);
x=value[i];
while(x!=0){

j=x%10;
if(j!=0 && value[i]%j==0)
{
count[i]++;
}
x=x/10;
}
}
for(i=1;i<=n;i++) printf("%d\n",count[i]);
}

/* Enter your code here. Read input from STDIN. Print output to STDOUT */
return 0;
}

``````
``````for _ in range(input()):
a = input()
count = 0
for i in list(str(a)):
if int(i) != 0 and a % int(i) == 0:
count += 1
print count
``````
``````import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Solution {

public static void main(String[] args){
int t;
Scanner scan = new Scanner(System.in);

t = scan.nextInt();

for(int i = 0; i < t; i++){
System.out.println(digits(scan.next()));
}

scan.close();
}

private static int digits(String number) {

int sum = 0;
char[] digits = number.toCharArray();

for(int i = 0; i < number.length(); i++){
if(Character.getNumericValue(digits[i]) != 0){
if(((Integer.parseInt(number))% (Character.getNumericValue(digits[i]))) == 0){
sum++;
}
}
else
continue;
}

return sum;
}
}``````
```#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int getR(string n, int q) {
if(!q) return 0;
int r = 0;
for(int i = 0;i < n.length();++i) {
r *= 10;
r += (n[i] - '0');
r %= q;
}
if(!r) return 1;
return 0;
}

int main() {
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
int T;
string n;
int res = 0;

cin >> T;
while(T--) {
cin >> n;

res = 0;
for(int i = 0;i < n.length();++i)
res += getR(n, n[i] - '0');

cout << res << endl;
}

return 0;
}
```

### hasectic

A web developer(Front end and Back end), and DBA at csdamu.com. Currently working as Salesforce Developer @ Tech Matrix IT Consulting Private Limited. Check me @about.me/s.saifi