第一行输入一个整数
表示测试数据组数,每组测试数据描述如下:
接下来一行输入一个整数
表示待判断的数字。
对于每一组测试数据,在一行上输出对应的情绪类型
、
或
。
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"); } } }