这个题真的,毫无思路的说,但是我们会打表啊:
lz的打表之路:
当然是手写一个暴力啦(*^▽^*)!
然后滚去配置lemon测试一下暴力可以得多少分qwq:
是的40分呢!
然后其实看上面也能看出来一些规律了,定睛一看(但其实我并没有看出来),斐波那契数列!?
于是我们就可以找斐波那契数列中最大的小于等于k的两项,然后码量也不多。关键是找出规律qwq,然后下面是某位神仙的推导:(来自寄蜉蝣于天地,渺沧海之一粟)
所以就写就好啦:
#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-