#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
bool p[125000+10],flag;
int n,max,i1;
bool pd(int x,int y){
for(i1=0;i1<n;i1++)
if(!p[x+i1*y] || x+i1*y>max) return false;
return true;
}
int main(){
int i,j,k,m;
freopen("ariprog.in","r",stdin);
freopen("ariprog.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=0;i<=m;i++)
for(j=0;j<=i;j++)
p[i*i+j*j]=true;
max=m*m;
max*=2;
flag=true;
k=max/(n-1);
for(i=1;i<=k;i++)
for(j=0;j<=max-i*(n-1);j++)
if((i%2==0 || n<=3) && pd(j,i)){
flag=false;
printf("%d %d\n",j,i);
}
if(flag) printf("NONE\n");
return 0;
}
usaco ariprog
最新推荐文章于 2018-11-01 00:16:14 发布