2019度小滿秋招研發編程題_數字的情緒

每個整數都希望可以整除很多數字,特別是它自身包含的數字,我們將整數分爲三類:

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章