记录编号 |
110448 |
评测结果 |
AAAAAAAE |
题目名称 |
等差数列 |
最终得分 |
87 |
用户昵称 |
KZNS |
是否通过 |
未通过 |
代码语言 |
C++ |
运行时间 |
3.857 s |
提交时间 |
2014-07-11 16:53:22 |
内存使用 |
0.45 MiB |
显示代码纯文本
#include<fstream>
#include<algorithm>
using namespace std;
class en
{
public:
int a;
int b;
};
bool ab(en a,en b);
void find(int k,int a,int b,int n);
en end[10100];
int endt=0,yt;
bool y[130000]={0};
int main()
{
ifstream fi("ariprog.in");
ofstream fo("ariprog.out");
int n,m;
fi>>n>>m;
yt=m*m*2;
for(int i=0;i<=m;i++)
for(int j=i;j<=m;j++)
y[i*i+j*j]=1;
for(int a=0;a<yt;a++)
if(y[a])
for(int b=1;b+a<yt;b++)
if(y[a+b])
find(a,a,b,n-1);
sort(end,end+endt,ab);
if(endt==0)
fo<<"NONE";
for(int i=0;i<endt;i++)
fo<<end[i].a<<' '<<end[i].b<<endl;
fi.close();
fo.close();
return 0;
}
void find(int k,int a,int b,int n)
{
if(n==0)
{
end[endt].a=k;
end[endt].b=b;
endt++;
return;
}
if(y[a+b])
find(k,a+b,b,n-1);
}
bool ab(en a,en b)
{
if(a.b<b.b)
return 1;
if(a.b==b.b)
return a.a<b.a;
return 0;
}