【7.9校內test】T2 極值問題

這個題真的,毫無思路的說,可是咱們會打表啊:c++

lz的打表之路:測試

固然是手寫一個暴力啦(*^▽^*)!spa

而後滾去配置lemon測試一下暴力能夠得多少分qwq:code

是的40分呢!blog

而後其實看上面也能看出來一些規律了,定睛一看(但其實我並無看出來),斐波那契數列!?get

因而咱們就能夠找斐波那契數列中最大的小於等於k的兩項,而後碼量也很少。關鍵是找出規律qwq,而後下面是某位神仙的推導:(來自寄蜉蝣於天地,渺滄海之一粟)it

因此就寫就好啦:io

#include<bits/stdc++.h>

using namespace std;

inline int read(){
    int ans=0;
    char last=' ',ch=getchar();
    while(ch>'9'||ch<'0') last=ch,ch=getchar();
    while(ch<='9'&&ch>='0') ans=(ans<<1)+(ans<<3)+ch-'0',ch=getchar();
    if(last=='-') ans=-ans;
    return ans;
}

int k;
long long f[100];

int main(){
    freopen("mn,in","r",stdin);
    freopen("mn,out","w",stdout);
    k=read();
    f[1]=1;f[0]=1;
    int i=2;long long ans;
    if(k==1){printf("1 1");return 0;}
    while(f[i]<=k){
        f[i]=f[i-1]+f[i-2];
        if(f[i]>k){
            printf("%lld %lld",f[i-2],f[i-1]);
            return 0;
        }
        i++;
    }
    return 0;
}

end-ast

相關文章
相關標籤/搜索