这是我未能通过隐藏测试的挑战:
给定整数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 :(得分:1)
正如user2357112所指出的,你已经拒绝了一些有效的案例,例如11,5,9:仍然允许6 + 5作为解决方案。
由于整数除法,您也未能拒绝无效案例,例如11,2,5,其中n == 2 * r + 1;但是,在这些情况下,您的计算自然会返回0。 我错了: r + r&lt; n 会抓住这种情况,但这意味着你的r&lt; (n / 2)案例是多余的
如果您的测试仍然有问题,请包括您的测试类和测试向量(输入集)。