最多不超过两倍,我们想到了什么,对,斐波那契数列。
详情请参见
#include<bits/stdc++.h>
long long n;
long long f[60];
int cnt;
int main()
{
freopen("in.txt","r",stdin);
std::cin>>n;
f[++cnt]=1;f[++cnt]=2;
while(f[cnt]<n)f[++cnt]=f[cnt-1]+f[cnt-2];
if(f[cnt]==n)std::cout<<n;
else
{
while(n)
{
while(f[cnt]>n)cnt--;
if(f[cnt]==n)return std::cout<<n,0;
n-=f[cnt];
}
}
return 0;
}