求助!多开了一个没用的数组就多过了一个点,否则就RE
查看原帖
求助!多开了一个没用的数组就多过了一个点,否则就RE
47439
高清重置版hy楼主2017/8/30 16:05

#55分代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int a[4000],c[10000+10],p[100000];
struct node{
    int x,y,z;
}b[100000];
bool cmp(node a,node b){
    return a.z>b.z;
}
int main(){
    int m,n;
    scanf("%d%d",&n,&m);
    for(int i=0;i<=m;i++){
        a[i]=i*i;
    }
    int cnt=0;
    for(int i=0;i<=m;i++){
        for(int j=i;j<=m;j++){
            if(!p[a[i]+a[j]]){b[++cnt].x=i;
            b[cnt].y=j;
            b[cnt].z=a[i]+a[j];
            p[b[cnt].z]=1;
        }
    }    
}
    sort(b+1,b+cnt+1,cmp);
    /*for(int i=1;i<=cnt;i++){
        cout<<b[i].z<<" ";
    }
    cout<<endl;
    for(int i=0;i<=100;i++){
        cout<<p[i]<<" ";
    }*/int fla=0;
    for(int a=1;a<=b[1].z;a++){
        for(int i=cnt;i>=1;i--){
            int t=b[i].z,flag=0;
            for(int j=1;j<n;j++){
                if(!p[t-a]||t-a<0){
                    flag=1;
                    break;
                }
                t-=a;
            }
            if(!flag){printf("%d %d\n",t,a);
            fla=1;}
        }
    }
    if(!fla)cout<<"NONE";
    return 0;
}
2017/8/30 16:05
加载中...