題目描述
給一個整數N,接著找出整數N的每個位數可以被拿來整除整數N的數量。
原題網址
輸入格式
第一行輸入測試資料的數量T,T的範圍在1到15(包含1和15)。接下來的T行每行為拿來進行測試的整數N,N的範圍在0~109(不包含0和109)。
輸出格式
以一行一個結果的方式,輸出每行測試資料輸入的整數N其每個位數可以被拿整除整數N的數量。
範例輸入
2
12
1012
12
1012
範例輸出
2
3
額外解釋
數字「12」的位數有「1」和「2」。12除以1可以整除,12除以2也可以整除,因此所有位數中可用來整除「12」的位數有1個1和1個2,總數量為3。
數字「1012」的位數有「1」、「0」、「1」、「2」。1012除以1可以整除,1012除以2也可以整除,任何數都不能除以0,因此所有位數中可用來整除「1012」的位數有2個1和1個2,總數量為3。
解題概念
可以利用計算「除以10後的餘數」和「除以10」的結果來拆解一個整數的所有位數。
要判斷一個數能不能整除另外一個數,可以判斷其經過除法之後的餘數是否為0,若為0表示整除。例如若要判斷100除以25是否為整數,那就計算100除以25的餘數是否為0,如果為0表示能整除。
參考答案
import java.util.Scanner;
public class Solution {
public static void main(final String[] args) throws Exception {
final Scanner sc = new Scanner(System.in);
int testCase = sc.nextInt();
while (testCase-- > 0) {
final int n = sc.nextInt();
int counter = 0;
int temp = n;
while (temp > 0) {
final int d = temp % 10;
temp /= 10;
if (d == 0) {
continue;
}
if (n % d == 0) {
++counter;
}
}
System.out.println(counter);
}
}
}