提供一个测试点
查看原帖
提供一个测试点
813622
Igallta楼主2023/9/30 21:43
input:
1 1 1
output:
2

这道题太水了,我这样明显错误的代码都能过。

#include<bits/stdc++.h>
using namespace std;
int n,x,y,xx=1,yy=1,cnt=0;
int a[31][31];
bool b[31][31];
vector<int>prime;
inline bool is_p(int x){
	for(int i=2;i*i<=x;i++){
		if(x%i == 0)return 0;
	}
	return 1;
}
int main(){
	cin>>n>>x>>y;
	int cont=0,i=2;
	while(cont<=n*n){
		if(is_p(i)){prime.push_back(i);++cont;}
		++i;
	}
	while(!(b[xx+1][yy] && b[xx-1][yy] && b[xx][yy-1] && b[xx][yy+1])){		
		while(!b[xx][yy] && yy<=n){	//向右走
			b[xx][yy]=1;
			a[xx][yy]=prime[cnt++];
			++yy;
		}
		--yy;
		++xx;
		while(!b[xx][yy] && xx<=n){//向下走
			b[xx][yy]=1;
			a[xx][yy]=prime[cnt++];
			++xx; 
		}
		--xx;
		--yy;
		//向左走		
		while(!b[xx][yy] && yy>=1){
			b[xx][yy]=1;
			a[xx][yy]=prime[cnt++];
			--yy;
		} 
		++yy;
		--xx;
		while(!b[xx][yy] && xx>=1){	//向上走
			b[xx][yy]=1;
			a[xx][yy]=prime[cnt++];
			--xx;
		}
		++xx;
		++yy;
	}
	a[xx][yy]=prime[cnt];
	cout<<a[x][y];
    return 0;
}

这个测试点可以很好地卡掉我的代码。

2023/9/30 21:43
加载中...