rt,如下的玄学代码可以过题。
(hack:输入2 输出0 正确1)
#include <bits/stdc++.h>
#define int long long
#define mod (int)(1e9+7)
using namespace std;
int fib[46];
void init(){
fib[0]=1;fib[1]=1;
for(int i=2;i<=45;i++)fib[i]=fib[i-1]+fib[i-2];
}
int lcm(int a,int b){
return a*b/__gcd(a,b);
}
signed main(){
init();int k;cin>>k;
int ans=0;
for(int i=0;i<=44;i++){
int a=fib[i],b=fib[i+1];
int y0=0;
while(b*(++y0)<k){
if((k-b*y0)%a==0){
ans+=((k-b*y0)/lcm(a,b))+1;
if(k%(a+b)==0)ans--;
ans%=mod;break;
}
}
}cout<<ans-1;
}