比赛 20140711B班小测 评测结果 C
题目名称 等差数列 最终得分 0
用户昵称 wolf 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2014-07-11 16:22:46
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
class point{
public:
	int a;
	int b;
	point(int c,int d){
		a=c;
		b=d;
	}
};
int N,M;int r=0;int u;
vector<int> num;
vector<point> end;
bool seek(int t){
	for(int i=u-1;i!=r;++i){
		++u;
		if(num[i]==t)
			return 1;
	}
	return 0;
}
int main(){
	FILE *in,*out;
	in=fopen("ariprog.in","r");
	out=fopen("ariprog.out","w");
	fscanf(in," %d %d",&N,&M);
	num.resize(125000,0);
	for(int i=0;i!=M+1;++i){
		for(int k=0;k!=M+1;++k){
			num[r]=i*i+k*k;
			++r;
		}
		
	}
	sort(num.begin(),num.begin()+r);
	int mmax;
	mmax=num[r-1];
	//cout<<"mmax="<<mmax<<endl;;
	/*for(int i=0;i!=r;++i){
		cout<<num[i]<<endl;
	}*/
	for(int b=1;;++b){
		if(b*(N-1)>mmax){
			break;
		}
		vector<int> pp;
		for(int i=0;i!=N;++i){
			pp.push_back(i*b);
		}
		for(int a=0;;++a){
			if(a+pp[pp.size()-1]>mmax){
				break;
			}
			bool off=1;
			u=1;
			for(int i=0;i!=N;++i){
				if(seek(a+pp[i])){
				}
				else{
					off=0;
					break;
				}
			}
			if(off){
				point e(a,b);
				end.push_back(e);
			}
		}
	}
	for(int i=0;i!=end.size();++i){
		fprintf(out,"%d %d\n",end[i].a,end[i].b);
		//cout<<end[i].a<<"  "<<end[i].b<<endl;
	}
	if(end.size()==0)
		fprintf(out,"NONE");
	return 0;
}
//designed by wolf