只有40分,求调
查看原帖
只有40分,求调
1244509
renzhanwen楼主2024/9/19 22:06

40分记录

#include<bits/stdc++.h>
using namespace std;
int n,x,y,m=-1,i=1,j=1,w=1;
bool isprime[10000000],vis[100][100];
vector<int> primes;
int main()
{
	cin>>n>>x>>y;
  	for(int i=1;i<=100000;i++)
    	isprime[i]=true;
  	for(int i=2;i<=100000;i++)
  	{
    	if(isprime[i])
      		primes.push_back(i);
    	for(int j=0;j<primes.size();j++)
    	{
     		int p=primes[j];
      		if(i*p>100000)
				break;
      		isprime[i*p]=false;
      		if(i%p==0) 
				break;
    	}
  	}
  	while(m<n*n)
  	{
  		vis[i][j]=true;
  		m++;
  		if(x==i&&y==j)
  		{
  			cout<<primes[m];
			return 0; 
		}
		if(w==1) 
		{
			if(j+1<=n&&!vis[i][j+1])
				j++;
			else
				w=2,i++;
			continue;
		}
		if(w==2)
		{
			if(i+1<=n&&!vis[i+1][j])
				i++;
			else
				w=3,j--;
			continue;
		}
		if(w==3)
		{
			if(j-1>=1&&!vis[i-1][j])
				j--;
			else
				w=4,i--;
			continue;
		}
		if(i-1>=1&&!vis[i-1][j])
			i--;
		else
			w=1,j++;
	}
  	return 0;
}
2024/9/19 22:06
加载中...