#8017: 這樣解答是正確的嗎?


bigpig (Bigpig)

學校 : 國立大里高級中學
編號 : 18246
來源 : [36.231.117.224]
最後登入時間 :
2022-08-25 07:57:07
d544. 1. 海藻(algae) -- 98學年度台北市資訊學科能力競賽 | From: [123.240.30.168] | 發表日期 : 2013-07-29 20:52

 小弟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;
}

 
ZeroJudge Forum