題目描述

給一個整數N,接著找出整數N的每個位數可以被拿來整除整數N的數量。



原題網址

輸入格式

第一行輸入測試資料的數量T,T的範圍在1到15(包含1和15)。接下來的T行每行為拿來進行測試的整數N,N的範圍在0~109(不包含0和109)。

輸出格式

以一行一個結果的方式,輸出每行測試資料輸入的整數N其每個位數可以被拿整除整數N的數量。

範例輸入

2
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);
        }
    }
}