小弟AC 4ms 但是不太確定這樣是不是矇到的
請高手看一看
#include <iostream>
using namespace std;
int main()
{
int fib[47] = {0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 24157817, 39088169, 63245986, 102334155, 165580141, 267914296, 433494437, 701408733, 1134903170, 1836311903};
int m,n,k,sp;
cin >> m;
for (int i=0;i<m;i++)
{
cin >> n >> k;
if (k <= fib[n] || n > 46)
{
if (n > 48) n = 47 + (int)!(n % 2);
while (1)
{
if (n == 1 || n == 2)
{
cout << n-1 << endl;
break;
}
else
{
sp = fib[n-2];
if (k > sp)
{
n -= 1;
k -= sp;
}
else
{
n -= 2;
}
}
}
}
else
{
cout << -1 << endl;
}
}
return 0;
}