大数 n (2<n<1e500), t(1<=t<=100)个测试
n是不是 2,3,4,5,6的倍数,是的话,在一行输出,以空格隔开,升序输出,无的话,输出-1
卡行末空格啊啊啊啊啊啊啊
字符串输入大数,对每一个因子,模拟手算除法,最后余数为0的话,表明是倍数
卡行末空格。。。。
#include<bits/stdc++.h>
using namespace std;
string s;
bool ac(string s,int n)
{
int len=s.size();
int sum=0;
for(int i=0;i<len;i++)
{
sum=(s[i]-'0'+sum*10)%n;
}
if(sum==0) return true;
else return false;
}
int t;
int main()
{
cin>>t;
while(t--)
{
cin>>s;
int flag=1;
for(int i=2;i<=6;i++)
{
if(ac(s,i))
{
if(flag==0) cout<<" ";//处理空格
cout<<i;
flag=0;
}
}
if(flag) cout<<-1;
cout<<endl;
}
return 0;
}
python 里int无界
万能队友!
t=eval(input())#eval()返回传入字符串的表达式的结果,换成int也可以
ok=1
for i in range(t):
ok=1
s=""
v=eval(input())
if v%2==0:
s="2"
ok=0
if v % 3 == 0:
if ok==0:
s=s+" 3"
else:
s="3"
ok = 0
if v%4==0:
if ok == 0:
s = s + " 4"
else:
s = "4"
ok = 0
if v%5==0:
if ok == 0:
s = s + " 5"
else:
s = "5"
ok = 0
if v%6==0:
if ok == 0:
s = s + " 6"
else:
s = "6"
ok = 0
if ok==1:
print(-1)
else:
print(s)