比赛 20140711B班小测 评测结果 WWWWWWTE
题目名称 等差数列 最终得分 0
用户昵称 noier 运行时间 7.804 s
代码语言 C++ 内存使用 2.59 MiB
提交时间 2014-07-11 15:51:44
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
///////////////////
//bool text[2*250*250]={false};
vector <bool> text(2*250*250,false);
vector <int> shulie;
class ans{
public:
	int a,b;
	ans (int x,int y){
		a=x;
		b=y;
	}
};
vector <ans> result;
bool compare(const ans&a,const ans&b){
		if(a.b!=b.b) return a.b<b.b;
		return a.a<b.a;
	}
///////////////////
int main(){
	ios::sync_with_stdio(false);
	freopen("ariprog.in","r",stdin);
	freopen("ariprog.out","w",stdout);
	int N,M;
	cin>>N>>M;
	for (int i=0;i<=M;i++){
		for(int j=0;j<=M;j++){
			text[i*i+j*j]=true;
		}
	}
	for (int i=0;i<=2*M*M;i++){
		if (text[i]) shulie.push_back(i);
	}
	for (int i=0;i<shulie.size();i++){
		for (int j=1;j<2*M*M-shulie[i];j++){
			bool temp=true;
			int t;
			for (t=0;t<N-1;t++)
				if (shulie[i]+t*j>2*M*M||!text[shulie[i]+t*j]) temp=false;
			if (text[shulie[i]+(N-1)*j]) temp=false;
			if(temp) result.push_back(ans(i,j));
		}
	}
	sort(result.begin(),result.end(),compare);
	for (int i=0;i<result.size();i++) cout<<result[i].a<<" "<<result[i].b<<endl;
	return 0;
}