zstuoj 4245 KI的斐波那契
KI的斐波那契
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 550 Solved: 208
Description
KI十分喜欢美丽而优雅的斐波那契数列,最近他新认识了一种斐波那契字符串,定义如下
f (0) = b, f (1) = a,
f (2) = f (1) + f (0) = ab,
f (3) = f (2) + f (1) = aba,
f (4) = f (3) + f (2) = abaab,
......
KI想知道 f (n) 中的第 m 位是什么,你可以帮他解决这个问题吗?
Input
Output
对于每个测试组,输出’a’或者’b’
Sample Input
54 15 310 2222 23366 2333333333333
Sample Output
aaaba
#include <iostream> #include <cstdio> #include <queue> #include <cstring> #include <stack> #include <algorithm> typedef long long ll; using namespace std; const int N=100; ll f[N]; void fi() { f[0]=1; f[1]=1; for(int i=2; i<=90; i++) { f[i]=f[i-1]+f[i-2]; } } int f1(ll n,ll m) { if(n==1) return 1; if(n==2) return m==1?1:0; if(m>f[n-1]) return f1(n-2,m-f[n-1]); else return f1(n-1,m); } int main() { int t; scanf("%d",&t); fi(); while(t--) { ll n,m; scanf("%lld %lld",&n,&m); f1(n,m)?puts("a"):puts("b"); } return 0; }