比赛 20140711B班小测 评测结果 AAWAAAAA
题目名称 等差数列 最终得分 87
用户昵称 KZNS 运行时间 6.368 s
代码语言 C++ 内存使用 2.37 MiB
提交时间 2014-07-11 16:24:27
显示代码纯文本
#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[20000];
int endt=0,yt;
bool y[2000000]={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);
	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;
}