社区讨论
求助!多开了一个没用的数组就多过了一个点,否则就RE
P1214[USACO1.4] 等差数列 Arithmetic Progressions参与者 35已保存回复 40
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 40 条
- 当前快照
- 1 份
- 快照标识符
- @m0qnh1hi
- 此快照首次捕获于
- 2024/09/06 19:45 2 年前
- 此快照最后确认于
- 2025/11/20 08:44 4 个月前
#55分代码
CPP#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;
}
回复
共 40 条回复,欢迎继续交流。
正在加载回复...