CF B 感觉没有错,但是WA了
查看原帖
CF B 感觉没有错,但是WA了
484894
_Archive_楼主2021/8/27 10:38

求助各位大佬/wq

我的方案是直接寻找11 44 66 88 99 ,就直接退出,再接着判断 剩下的:

遇到 2255 只要不是第一位就直接将答案设置为第一位加 2255

其他判断:3333 2727 5757 7777

请问这样子会有什么问题?

在第二个点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;
}
2021/8/27 10:38
加载中...