比赛 20140711B班小测 评测结果 AAAAAAAA
题目名称 等差数列 最终得分 100
用户昵称 幻灵子 运行时间 1.218 s
代码语言 C++ 内存使用 0.56 MiB
提交时间 2014-07-11 15:55:04
显示代码纯文本
#include <vector>
#include <algorithm>
#include <functional>
#include <cstdlib>
#include <iostream>
#include <fstream>

using namespace std;

const int N = 300000;

bool    flag[N]; 
bool    none_find =true;
int        array[N];

int main(){
    int i,j,num,n,m, def;

    ifstream in("ariprog.in");
    ofstream out("ariprog.out");

    in>>n>>m;

    num=0;
    for(i=0;i<=m;++i)
        for(j=0;j<=m;++j){
            if(!flag[i*i+j*j]){
                array[num++] = i*i+j*j;
            }
            flag[i*i+j*j] = true;
        }

    sort(array, array+num);

    //a+(n-1)*b <= m*m+m*m
    bool is;
    int p,c;
    int max = 2*m*m;
    int def_max = max/(n-1);

    for(def=1; def<=def_max; def++){
        for(p=0; array[p]<=(max-((n-1)*def)); p++){
            is = true;
            for(c=(n-1); c>=0; c--){
                if(!flag[array[p]+c*def]){
                    is =false;
                    break;
                }
            }
            if(is){
                none_find = false;
                out<<array[p]<<" "<<def<<endl;
            }
        }
    }

    if(none_find)
        out<<"NONE"<<endl;

    return 0;
}