#include<bits/stdc++.h>
using namespace std;
char number(long long n)
{
//判断有没有可以整除或者不能整除的数
int f=0;
int t=0;
long long o=n;//存下原数
while(n)
{
long long x=n%10;
if(x!=0)
{
if(o%x==0) t=1;
else f=1;
}
else t=1;
if(t&&f) break;//优化时间复杂度,发现等于H直接返回
n/=10;
}
if(!t)
return 'S';
else if(!f)
return 'G';
else return 'H';//这里如果不把return H放在这里会报错
}
int main()
{
int q;
cin>>q;
while(q--)
{
long long n;
cin>>n;
cout<<number(n)<<'\n';
}
return 0;
}
考察数字的处理,提取每一位数字就是取余然后n/=10;
要注意数据的大小,我刚开始用int直接爆了。
好好读题,我刚开始没发现还有特判,在这看半天还以为数据出错了。



京公网安备 11010502036488号