若直接从1遍历到50,长度太长。
本题要用递归来解决,若y大于第i - 2个长度,则在第i-1个进行查找,否则在i-2个进行查找
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <vector>
#include <stack>
#include <string.h>
#include <map>
#include <math.h>
#include <queue>
#include <set>
#include <algorithm>
#define MAX 0x3f3f3f3f
typedef long long ll;
using namespace std;
int n,m,k;
int a[51];
void solve(int x,int y)
{
if(x == 1)
cout<<'b'<<endl;
else if(x == 0)
cout<<'a'<<endl;
else if(y <= a[x - 2])
solve(x - 2,y);
else if(y > a[x - 2])
solve(x - 1 ,y - a[x-2]);
}
int main()
{
cin>>n;
a[0] = 1;
a[1] = 1;
for(int i = 2; i<= 49 ;i++)
a[i] = a[i-1] + a[i-2];
while(n--)
{
int x,y;
cin>>x>>y;
solve(x, y);
}
return 0;
}