@[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