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

 

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