我这个CZS觉得一点毛病没有,思路如下,请各位大佬指教:
先找到longlong内的所有斐波那契数,再从大往小找,如果给的那个N可以减掉这个斐波那契数就减掉,直到便利完所有斐波那契数,然后如你所见的第3、5个点WA
#include <iostream>
#include <stack>
using namespace std;
long long t,n,f[40];
int main()
{
cin>>t;
f[0]=1;
f[1]=1;
for(int i=2;i<37;i++)
f[i]=f[i-1]+f[i-2];
while(t--)
{
stack <long long> nums;
cin>>n;
cout<<n<<"=";
for(int i=35;i>=0;i--)
{
if(f[i]<=n)
{
n-=f[i];
nums.push(f[i]);
}
}
while(!nums.empty())
{
cout<<nums.top();
nums.pop();
if(!nums.empty())
cout<<"+";
}
cout<<endl;
}
return 0;
}