题目大意:给出一个正整数x,问x最少能由多少个Fibonacci数加减算出
题解:Orz
我的收获:珂学贪心
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int T;
ll n,f[105];
int cal(ll x){
if(!x) return 0;
int i;
for(i=1;f[i]<x;i++);
return cal(min(x-f[i-1],f[i]-x))+1;
}
void work()
{
cin>>n;
cout<<cal(n)<<endl;
}
int main()
{
f[0]=f[1]=1;for(int i=2;i<=91;i++) f[i]=f[i-1]+f[i-2];
cin>>T;
while(T--) work();
return 0;
}