MakerFly @ 2023-05-04 22:30:53
为什么本地爆内存,洛谷就可以运行得起来啊???
没参加过比赛,这是什么原理???
by N1ght_Star @ 2023-05-04 22:55:39
有没有可能你要把代码粘出来
by Ruiqun2009 @ 2023-05-04 23:15:57
@MakerFly Dev-C++ 默认栈大小 2MB,数组这么大当然爆栈。
实际上只需要开到
或者使用 vector
。
by MakerFly @ 2023-05-05 12:50:52
@N1ght_Star qwq感谢提醒
#include<cstdio>
#include<cstring>
#include<math.h>
#include<algorithm>
#define maxn 1667
using namespace std;
struct Bigint
{
int len,a[maxn];
Bigint(int x=0)
{
memset(a,0,sizeof(a));
for(len=1;x;len++)
a[len]=x%10,x/=10;
len--;
}
int &operator[](int i)
{
return a[i];
}
void flatten(int L)
{
len=L;
for(int i=1;i<=len;++i)
a[i+1]+=a[i]/10,a[i]%=10;
for(;!a[len];)
len--;
}
void print()
{
for(int i=max(len,1);i>=1;i--)
printf("%d",a[i]);
}
};
Bigint operator+(Bigint a,Bigint b)
{
Bigint c;
int len=max(a.len,b.len);
for(int i=1;i<=len;++i)
c[i]+=a[i]+b[i];
c.flatten(len+1);
return c;
}
int main()
{
int N;
scanf("%d",&N);
Bigint f[5001];
f[1]=Bigint(1);
f[2]=Bigint(2);
for(int i=3;i<=N;i++)
f[i]=f[i-2]+f[i-1];
f[N].print();
return 0;
}
by MakerFly @ 2023-05-05 13:00:13
@Ruiqun2009 感谢qwq,请问如果遇见大样例数据,是不是需要在一般自己测试时修改默认内存,或者有啥其他好方法呢?NOIP允许的此类操作有哪些?
by N1ght_Star @ 2023-05-07 13:12:58
@MakerFly 记得没错有一个修改栈大小的指令
by MakerFly @ 2023-05-07 14:16:33
@N1ght_Star 是的,
-Wl,-stack=134217728
在编译选项中调用qwq
感谢,现在知道怎么用了