# Find Digits

### Problem Statement :

```An integer d is a divisor of an integer n if the remainder of n/d = 0.

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.

Example
n = 124
Check whether 1, 2 and 4 are divisors of 124. All 3 numbers divide evenly into 124 so return 3.

n = 111
Check whether 1, 1, 1 and  are divisors of 111. All 3 numbers divide evenly into 111 so return 3.

n = 10
Check whether 1 and 0 are divisors of 10. 1 is, but 0 is not. Return 1.

Function Description

Complete the findDigits function in the editor below.
findDigits has the following parameter(s):
int n: the value to analyze

Returns
int: the number of digits in n that are divisors of n

Input Format

The first line is an integer, t, the number of test cases.
The t subsequent lines each contain an integer, n.

Constraints
1 <= t <= 15
0 < n < 10^9```

### Solution :

```                            ```Solution in C :

python 3 :

def func(A):
return len([1 for i in str(A) if i !='0' and A%int(i)==0])

for t in range(int(input())):
print(func(int(input())))

java  :

import java.util.*;
class Solution
{
public static void main(String args[])
{
Scanner in=new Scanner(System.in);
int t,ans,d;
long n,m;
t=in.nextInt();
while(t-->0)
{
ans=0;
n=in.nextLong();
m=n;
while(m!=0)
{
d=(int)m%10;
m=m/10;
if(d==0)
continue;
if(n%d==0)
ans++;
}
System.out.println(ans);
}
}
}

C ++  :

#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() {
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;
}

C  :

#include <stdio.h>

int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int N,M,d,c=0;
scanf("%d",&N); M=N;
while(N)
{
d=N%10;
N=N/10;
if(d && M%d==0) c++;
}
printf("%d\n",c);
}
return 0;
}```
```

## Down to Zero II

You are given Q queries. Each query consists of a single number N. You can perform any of the 2 operations N on in each move: 1: If we take 2 integers a and b where , N = a * b , then we can change N = max( a, b ) 2: Decrease the value of N by 1. Determine the minimum number of moves required to reduce the value of N to 0. Input Format The first line contains the integer Q.

## Truck Tour

Suppose there is a circle. There are N petrol pumps on that circle. Petrol pumps are numbered 0 to (N-1) (both inclusive). You have two pieces of information corresponding to each of the petrol pump: (1) the amount of petrol that particular petrol pump will give, and (2) the distance from that petrol pump to the next petrol pump. Initially, you have a tank of infinite capacity carrying no petr

## Queries with Fixed Length

Consider an -integer sequence, . We perform a query on by using an integer, , to calculate the result of the following expression: In other words, if we let , then you need to calculate . Given and queries, return a list of answers to each query. Example The first query uses all of the subarrays of length : . The maxima of the subarrays are . The minimum of these is . The secon

## QHEAP1

This question is designed to help you get a better understanding of basic heap operations. You will be given queries of types: " 1 v " - Add an element to the heap. " 2 v " - Delete the element from the heap. "3" - Print the minimum of all the elements in the heap. NOTE: It is guaranteed that the element to be deleted will be there in the heap. Also, at any instant, only distinct element