-2

コードは私のインタープリターでは完全に正常に機能しますが、spojでNZECを提供します。

cases = int(raw_input())
for i in xrange(cases):
    k = 0
    n,m = map(int, sys.stdin.readline().split())
    sq5 = Decimal(sqrt(5))
    phi = (1 + sq5)/2                          #Refer wikipedia page for calculating fibonacci numbers
    print (int(Decimal(phi)**(m+2)/sq5 + Decimal(0.5)) - int(Decimal(phi)**(n+1)/sq5 + Decimal(0.5)))%1000000007

私は何が間違っているのですか?

4

3 に答える 3

0

入力に余分な空白があるため、NZEC を取得していると思われます。ただし、それらを処理するのは簡単です。入力を一度に読み取り、空白でトークン化します。

import sys
tokenizedInput = sys.stdin.read().split()    # Delimited by white spaces
cases = int(tokenizedInput[0])
readAt = 1
for i in xrange(cases):
    k = 0
    n,m = map(int, tokenizedInput[readAt:readAt+2])
    sq5 = Decimal(sqrt(5))
    phi = (1 + sq5)/2                          #Refer wikipedia page for calculating fibonacci numbers
    print (int(Decimal(phi)**(m+2)/sq5 + Decimal(0.5)) - int(Decimal(phi)**(n+1)/sq5 + Decimal(0.5)))%1000000007
    readAt = readAt + 2    # Increment the position to read at by 2

これを提出すると、TLE を取得する必要があります。Mark Dickinson が質問のコメントで指摘したように、これは非効率的なアルゴリズムです。

于 2013-01-07T02:12:37.333 に答える