4245: KI的斐波那契
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 562 Solved: 213
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
5
4 1
5 3
10 22
22 233
66 2333333333333
Sample Output
a
a
a
b
a
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll f[111];
void dfs(int n,ll m)
{
if(n==0) {
puts("b");return;
}
if(n==1) {
puts("a");return;
}
ll tmp=f[n];
if(m>tmp) dfs(n-2,m-tmp);
else
dfs(n-1,m);
}
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
ll m;
scanf("%d%lld",&n,&m);
f[0]=0;f[1]=1;
for(int i=2;i<=n+1;i++)
f[i]=f[i-1]+f[i-2];
dfs(n,m);
}
}