站外题求助,一直在超时、爆内存、越界当中痛苦徘徊

灌水区

@[20121202Tzy](/user/1020835) 啊?开1e9数组干嘛,斐波那契数列值域到1e9都不需要100的定义域
by arrowpoint @ 2024-03-21 19:20:16


@[20121202Tzy](/user/1020835) 我知道,但是真的不能开这么大的数组,铁定爆内存
by nightwatch_ryan @ 2024-03-21 19:20:51


哦 @[nightwatch_ryan](/user/961351) @[arrowpoint](/user/741839)
by 20121202Tzy @ 2024-03-21 19:21:27


那大概开多大 @[arrowpoint](/user/741839)
by 20121202Tzy @ 2024-03-21 19:22:06


@[20121202Tzy](/user/1020835) 预处理1-1e9的斐波那契数列(目测<100项),然后每输入一个数都找到与之最接近的斐波那契数,不断减去之并重复此过程。复杂度$O(tlogn)$,这个垃圾数据范围查找都不用二分,直接暴力都可以
by arrowpoint @ 2024-03-21 19:22:41


@[20121202Tzy](/user/1020835) 开100绝对够
by arrowpoint @ 2024-03-21 19:23:10


@[arrowpoint](/user/741839) 知道了,我去改改
by 20121202Tzy @ 2024-03-21 19:23:25


@[20121202Tzy](/user/1020835) ```cpp #include<bits/stdc++.h> using namespace std; int a[50]={1,2},ans[50],i; int main(){ for(i=2;a[i-1]<100000000;i++) a[i]=a[i-1]+a[i-2]; int t; cin>>t; while(t--){ int n,s=0; cin>>n; cout<<n<<"="; for(int i=38;i>=0&&n;i--) while(a[i]<=n) ans[++s]=a[i],n-=a[i]; for(int i=s;i>1;i--)cout<<ans[i]<<"+"; cout<<ans[1]<<endl; } return 0; } ```
by DFs_YYDS @ 2024-03-21 19:29:51


@[20121202Tzy](/user/1020835) 马蜂不佳,不喜勿喷
by DFs_YYDS @ 2024-03-21 19:30:26


@[DFs_YYDS](/user/1119406) @[nightwatch_ryan](/user/961351) @[arrowpoint](/user/741839) 谢各位大佬,都已关
by 20121202Tzy @ 2024-03-21 19:30:59


上一页 | 下一页