2016-11-30 55 views
0

下面是我對失敗的一個隱藏的測試挑戰:失敗隱藏CodeFights測試 - 在代碼中找不到破綻

鑑於整數N,L和R,找到方法來表示n的數兩個整數A和B的和,使得l≤A≤B≤r。

這裏是我的代碼:

def countSumOfTwoRepresentations2(n, l, r): 
    #initializing return variable 
    totalcount = 0 
    #returns 0 in impossible cases 
    if (l + r > n): 
     return 0 
    if (r + r < n): 
     return 0 
    if (r < (n/2)) or (l > (n/2)): 
     return 0 
    # finding the total number of possibilities 
    p = n/2 
    # finding which if l or r is further from 0 or n, respectively 
    c = max((n-r),l) 
    # removing impossible cases 
    totalcount = (p - c) + 1 
    return totalcount 

它通過了所有測試,我可以看到輸入(和每個自定義一個我能想到的),但卻未能在隱藏的人之一。我錯過了任何明顯的缺陷?謝謝

+0

如果這確實是Python,那麼是的,我可以發現這個缺陷。您的縮進是*方式*關閉。 – usr2564301

+2

'如果(l + r> n):' - 這怎麼可能? – user2357112

回答

1

正如user2357112指出的,你已經拒絕了一些有效的例子,如11,5,9:仍然允許6 + 5作爲解決方案。

由於整數除法,例如11,2,5,n == 2 * r + 1,您也無法拒絕無效的情況;然而,在這些情況下,您的計算自然返回0 我錯在這裏:[R + R <ň將抓住這種情況下,但是這意味着你的[R <(N/2)的情況下是多餘

如果您的測試仍然存在問題,請包括您的測試類和測試向量(輸入集)。