每個整數都希望可以整除很多數字,特別是它自身包含的數字,我們將整數分爲三類:
1. 數字可以整除它包含的一部分數字,比如72,由,7和2兩種數字組成,72可以整除2,我們稱這個數字是開心的,用”H”表示。
2. 數字不能整除它包含的任何數字,比如73,由,7和3兩種數字組成,73不能整除任何數,我們稱這個數字是沮喪的,用”S”表示。
3. 數字可以整除它包含的所有數字,比如12,既可以整除1又可以整除2,我們稱它是一個非常棒的數,用“G”表示。 (0可以被任何數整除。)
輸入描述:
輸入第一行包含一個整數T,表示數據組數(1<=T<=100). 接下來T行,每行包含一個正整數n(1<=n<=10^12),表示需要你判斷的數字。
輸出描述:
對於每組測試數據輸出一行,“H”,“S”或“G”。表示整數種類。
輸入例子1:
3
72
73
12
輸出例子1:
H
S
G
分析:數字的情緒,被這道題弄的一點脾氣都沒有,算G的時候需要計算加上數字中0的個數。。。
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int t = input.nextInt();
Long[] num = new Long[13];
while (t > 0) {
Long n = input.nextLong();
Long m = n;
List slist = new ArrayList();//統計S的個數
List glist = new ArrayList();//統計G的個數
int len = m.toString().length();//輸入數字的長度
int cunt = 0;//非0的數字個數
int errcunt = 0;//0的個數
while (n > 0) {
if (n % 10 != 0) {
num[cunt++] = n % 10;
} else {
errcunt++;
}
n = n / 10;
}
for (int i = 0; i < cunt; i++) {
if (m % num[i] == 0) {
glist.add("G");
}
if (m % num[i] != 0) {
slist.add("S");
}
}
//算G的時候需要加上0的個數
if (errcunt + glist.size() == len) {
System.out.println("G");
} else if (slist.size() == len) {
System.out.println("S");
} else {
System.out.println("H");
}
t--;
}
}
}