首页 > 试题广场 >

数字的情绪

[编程题]数字的情绪
  • 热度指数: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}
头像 KrisHugo
发表于 2025-07-18 22:46:22
import sys queryTimes = int(input()) for i in range(queryTimes): line = input() n = int(line) count = 0 length = len(line) for c 展开全文
头像 昱立123
发表于 2025-11-05 11:45:42
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner sc = 展开全文
头像 没毕业求带
发表于 2025-11-22 14:42:16
for _ in range(int(input())): d = input() pan = '' for i in d: if i == '0': pan += '0' elif int(d)%int(i)==0: 展开全文
头像 丨阿伟丨
发表于 2025-08-28 16:23:26
题目链接 数字的情绪 题目描述 给定一个正整数 ,设其十进制表示中所有出现过的数字构成的集合为 。我们根据以下规则判断 的情绪: 开心数 (Happy): 若存在某些 使得 且 。记作 H。 沮丧数 (Sad): 若对所有 均有 。记作 S。 极棒数 (Great): 若对所有 展开全文
头像 大明玄贞
发表于 2025-07-26 17:26:56
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = 展开全文
头像 bandiaoz
发表于 2024-12-27 02:01:14
解题思路 题目要求将整数按照其数位的整除性质分为三类: H(Happy):数字可以被部分包含的数位整除 S(Sad):数字不能被任何包含的数位整除 G(Great):数字可以被所有包含的数位整除 解题思路: 对每个输入的数字,提取其所有数位 统计: 总数位个数(flag) 可以整除的数位个数 展开全文