usaco等差数列

来源:互联网 发布:淘宝店铺数据分析表格 编辑:程序博客网 时间:2024/06/04 18:08
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
vector<int> g;
int n,m,cnt1,vis[200001],a[200010],cnt;
struct node{
 int x,y;
}s[200001];
bool cmp(node a,node b){
 if(a.y!=b.y) return a.y<b.y;
 return a.x<b.x;
}
int main(){
 scanf("%d%d",&n,&m);
 for(int i=0;i<=m;i++){
  g.push_back(i*i);
  vis[i*i]=true;
 }
 for(int i=0;i<g.size();i++){
  for(int j=0;j<g.size();j++){
   if(!vis[g[i]+g[j]]){
    vis[g[i]+g[j]]=true;
    a[++cnt]=g[i]+g[j];
   }
  }
 }
 for(int i=0;i<g.size();i++){
  a[++cnt]=g[i];
 }
 sort(a+1,a+1+cnt);
 /*for(int i=0;i<g.size();i++) cout<<g[i]<<' ';
 cout<<endl;*/
 /*for(int i=1;i<=cnt;i++) cout<<a[i]<<' ';
 cout<<endl;*/
 for(int i=1;i<=cnt-n+1;i++){
  for(int k=a[i+1]-a[i];k<=(a[cnt]-a[i])/(n-1);k++){
   int j,now=a[i];
   for(j=2;j<=n;j++){
    if(!vis[now+k]){
     break;
    }
    now+=k;
   }
   if(j==n+1){
    s[++cnt1].x=a[i];
    s[cnt1].y=k;
   }
  }
 }
 sort(s+1,s+1+cnt1,cmp);
 for(int i=1;i<=cnt1;i++){
  cout<<s[i].x<<' '<<s[i].y<<endl;
 }
 if(cnt1==0){
  cout<<"NONE"<<endl;
 }
 return 0;
}
原创粉丝点击