每个整数都希望可以整除很多数字,特别是它自身包含的数字,我们将整数分为三类:
1. 数字可以整除它包含的一部分数字,比如72,由,7和2两种数字组成,72可以整除2,我们称这个数字是开心的,用”H”表示。
2. 数字不能整除它包含的任何数字,比如73,由,7和3两种数字组成,73不能整除任何数,我们称这个数字是沮丧的,用”S”表示。
3. 数字可以整除它包含的所有数字,比如12,既可以整除1又可以整除2,我们称它是一个非常棒的数,用“G”表示。 (0可以被任何数整除。)
每个整数都希望可以整除很多数字,特别是它自身包含的数字,我们将整数分为三类:
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”。表示整数种类。
3 72 73 12
H S G
#include<bits/stdc++.h> using namespace std; int main() { int t; cin>>t; long long num; while(t--) { cin>>num; long long res=0,n=num,t=0; while(n) { int m=n%10; n/=10; if(m==0||num%m==0) res++; t++; } if(res==0) cout<<"S"<<endl; else if(res==t) cout<<"G"<<endl; else cout<<"H"<<endl; } return 0; }
k=input() for i in range(int(k)) : n=input() flag1=flag2=0#flag1为1表示有无法整除的数,flag2为1表示有可以整除的数 for j in n : if j!='0'and int(n)%int(j)!=0 : flag1=1 if j=='0'or int(n)%int(j)==0 : flag2=1 if flag1==0 and flag2==1 :print('G') elif flag1==1 and flag2==0 : print('S') else :print('H')
#include <bits/stdc++.h> using namespace std; int main(){ int T; cin>>T; for(int i=0;i<T;i++){ long long n; int j=0,sum=0; char ans='S'; cin>>n; string num=to_string(n); while(j<num.size()){ if(num[j]=='0'||n%(num[j]-'0')==0){ sum++; } j++; } ans = sum>0 ? 'H':'S'; if(sum==num.size()) ans='G'; cout<<ans<<endl; } return 0; }
#include <bits/stdc++.h> using namespace std; int main(){ long T,n; cin>>T; while(T--){ cin>>n; int cnt=0, w=0; long x = n; while(x){ int t = x%10; if(t==0 || n%t==0) cnt++; x /= 10; w++; } if(cnt==w) cout<<"G"<<endl; else if(cnt==0) cout<<"S"<<endl; else cout<<"H"<<endl; } return 0; }
/* 思路:利用标志的方式判断,创建两个标志,当能够整除任一个部分数字,该标志为true, 当不能整除任一个部分数字,该标志为true 这样通过两个标志的组合便可以得到结果 注意除数为0的情况 注意int最多只能存10位的数,题目中是10^12,所以用long */ import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); long[] arr = new long[n]; for(int i = 0; i < n; i++) { arr[i] = sc.nextLong(); } for (int i = 0; i < arr.length; i++) { boolean oneNum = false; boolean noNum = false; long temp = arr[i]; while(temp > 0) { long di = temp % 10; if(di == 0 || arr[i] % di == 0) { oneNum = true; }else { noNum = true; } 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"); } } } }
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"); } } }
/* 思路:利用标志的方式判断,创建两个标志,当能够整除任一个部分数字,该标志为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"); } } }