首页 > 试题广场 >

数字的情绪

[编程题]数字的情绪
  • 热度指数:4413 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}给定一个正整数 n,设其十进制表示中出现过的数字集合为 \{d_1,d_2,\dots,d_k\}(当且仅当 n=0k=0)。我们按照下面的规则将 n 划分为三种情绪:
\hspace{23pt}\bullet\, 若存在某些 d_i,d_j 使得 d_i\mid nd_j\nmid n,则称 n开心数,记作 \texttt{H}
\hspace{23pt}\bullet\, 若对所有 d_i 均有 d_i\nmid n,则称 n沮丧数,记作 \texttt{S}
\hspace{23pt}\bullet\, 若对所有 d_i 均有 d_i\mid n,则称 n极棒数,记作 \texttt{G}
\hspace{15pt}特别地,我们认为对任意的正整数 n,均有 0\mid n

输入描述:
\hspace{15pt}第一行输入一个整数 T\left(1\leqq T\leqq 100\right) 表示测试数据组数,每组测试数据描述如下: 
\hspace{23pt}\bullet\, 接下来一行输入一个整数 n\left(1\leqq n\leqq 10^{12}\right) 表示待判断的数字。


输出描述:
\hspace{15pt}对于每一组测试数据,在一行上输出对应的情绪类型 \texttt{H}\texttt{S}\texttt{G}
示例1

输入

3
72
73
12

输出

H
S
G

说明

\hspace{23pt}\bullet\, 对于 72,其数字集合为 \{7,2\}72 能被 2 整除但不能被 7 整除,因此输出 \texttt{H}
\hspace{23pt}\bullet\, 对于 73,其数字集合为 \{7,3\}73 不能被 7 也不能被 3 整除,因此输出 \texttt{S}
\hspace{23pt}\bullet\, 对于 12,其数字集合为 \{1,2\}12 能被 12 都整除,因此输出 \texttt{G}
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Boolean isStart=false;
        Scanner in = new Scanner(System.in);
        int len=in.nextInt();
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNext()) { // 注意 while 处理多个 case
            String inStr = in.next();
            Long inLong = Long.parseLong(inStr);
           
            char[] chars = inStr.toCharArray();

            int total=0;
            int gNum=0;

            for(char c: chars){
                int deNum=Integer.parseInt(c+"");
               
                if(deNum==0 || inLong % deNum ==0){
                    total++;
                    gNum++;
                }else{
                    total++;
                }
            }
            String result="";
            if(gNum == 0){
                result="S";
            }else if(gNum==total){
                result="G";
            }else {
                result ="H";
            }
            System.out.println(result);
        }
    }
}
发表于 2025-08-07 09:13:59 回复(0)
import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            long n  = Integer.valueOf(sc.nextLine());
            for(int i =0;i<n;i++){
                String str = sc.nextLine();
                long num = Long.parseLong(str);
                int total = 0;
                int length = str.length();
                for(int j =0;j<length;j++){
                    int value = str.charAt(j)-48;
                    if(value==0){
                       total++;
                    }else if(num%value==0)total++;
                }
                outPut(total,length);
            }
        }
    }
    public static void outPut(int total,int length){
        if(total==length){
            System.out.println("G");
        }else if(total>0){
            System.out.println("H");
        }else{
            System.out.println("S");
        }
    }
}

发表于 2020-06-04 11:18:58 回复(0)
/*
思路:利用标志的方式判断,创建两个标志,当能够整除任一个部分数字,该标志为true,
当不能整除任一个部分数字,该标志为true
这样通过两个标志的组合便可以得到结果
注意除数为0的情况
*/

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader; 
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int m = Integer.parseInt(br.readLine());
        long[] arr = new long[m];
        for(int i = 0;i<m;i++)
            arr[i] = Long.parseLong(br.readLine());
        for(int i = 0;i<m;i++){
            boolean onenum = false;
            boolean nonum = false;
            long temp = arr[i];
            while(temp > 0){
                long divi = temp%10;
                if(divi == 0 || arr[i]%divi == 0){
                    onenum = true;
                }else{
                    nonum = true;
                }
                temp = temp/10;
            }
            if(onenum == true && nonum == true){
                System.out.println("H");
            }else if(onenum == false && nonum == true){
                System.out.println("S");
            }else if(onenum == true && nonum ==false)
                System.out.println("G");
        }
    }
}

发表于 2020-05-22 11:42:59 回复(0)