建议加强数据
查看原帖
建议加强数据
161748
ssilrrr楼主2022/8/12 13:48

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;//离谱
}
2022/8/12 13:48
加载中...