求助各位大佬
我的方案是直接寻找1 4 6 8 9 ,就直接退出,再接着判断 剩下的:
遇到 2 或 5 只要不是第一位就直接将答案设置为第一位加 2 或 5。
其他判断:33 27 57 77
请问这样子会有什么问题?
在第二个点WA了好几次,能帮我调一下吗,谢谢
#include<bits/stdc++.h>
#define ll long long
using namespace std;
inline int read(){
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
return s*w;
}
int main(){
int t=read();
while(t--){
int k=read();
string s;
cin>>s;
bool f=0;
bool a=0,b=0,c=0,d=0;
string ans2;
for(int i=0;i<k;i++){
if(s[i]!='2'&&s[i]!='3'&&s[i]!='5'&&s[i]!='7'){
f=1;
cout<<1<<endl<<s[i]<<endl;
break;
}
if(s[i]=='2'){
if(i!=0){
ans2+=s[0];
ans2+="2";
}
a=1;
}
else if(s[i]=='3'){
if(b==1) ans2="33";
b=1;
}
else if(s[i]=='5'){
if(i!=0){
ans2+=s[0];
ans2+="5";
}
c=1;
}
else if(s[i]=='7'){
if(a==1) ans2="27";
if(c==1) ans2="57";
else if(d==1) ans2="77";
d=1;
}
}
if(!f) cout<<2<<endl<<ans2<<endl;
}
return 0;
}