/*
ID: cm750621
PROG: ariprog
LANG: C++
*/
#include<stdio.h>
#include<string.h>
const int N=200010;
int vis[N],s[N];
int main(){
freopen("ariprog.in","r",stdin);
freopen("ariprog.out","w",stdout);
int i,j,k,m,n,num,a,b,sum;
num=0;
for(i=0;i<N;i++)
vis[i]=0;
scanf("%d%d",&n,&m);
sum=2*m*m;
for(i=0;i<=m;i++)
for(j=0;j<=i;j++)
vis[i*i+j*j]=1;
for(i=0;i<=sum;i++)
if(vis[i]){
num++;
s[num]=i;
}
int e=0;
for(b=1;b*(n-1)<=sum;b++)
for(i=1;i<=num-n+1 && s[i]+(n-1)*b<=sum;i++){
a=s[i];
for(j=n-1;j>=1;j--){
if(!vis[a+j*b])
break;
}
if(!j){
e++;
printf("%d %d\n",a,b);
}
}
if(!e)
printf("NONE\n");
return 0;
}
usaco 1.4.1 ariprog
最新推荐文章于 2018-11-01 00:16:14 发布