为什么我的 python 程序 ignore/skip 有些情况
Why does my python program ignore/skip some cases
我正在尝试编写执行以下操作的代码:
第一行,输入两个space分隔的整数,第一个表示后面要输入的列表的长度,第二个表示一个int,叫做k
,稍后会用到。
第二行会输入我说的列表
预期输出满足以下条件:
对 的 ( i , j ),其中 iand ar[ i ]+ar[ j ] 是可被k
整除。
问题:我不知道为什么我的代码忽略了一些对。我已经在许多测试用例中尝试过它,但 90% 的测试都失败了,因为它输出的对数比预期的要少。我知道我非常接近正确的结果,我只是不知道我做错了什么。
有关我希望我的代码执行的操作的更准确信息,请查看此 link(无需注册或登录): https://www.hackerrank.com/challenges/divisible-sum-pairs/problem
这是我的代码:
#https://www.hackerrank.com/challenges/divisible-sum-pairs/problem
samples_and_k = [int(x) for x in input().split()]
num_list = [int(y) for y in input().split()]
num_list.sort()
counter =0
for i in range(0, samples_and_k[0]-1):
for j in range(i+1, samples_and_k[0]-1):
if (num_list[i]+num_list[i+1]) % samples_and_k[1] == 0:
counter += 1
print(counter)
这是一个例子:
输入:
6 3
1 3 2 6 1 2
预期输出:
5
我的代码输出:
3
问题是你在使用range()
时减去1:
for i in range(0, samples_and_k[0]-1):
for j in range(i+1, samples_and_k[0]-1):
if (num_list[i]+num_list[i+1]) % samples_and_k[1] == 0:
counter += 1
应该是:
for i in range(0, samples_and_k[0]):
for j in range(i+1, samples_and_k[0]):
if (num_list[i]+num_list[i+1]) % samples_and_k[1] == 0:
counter += 1
使用 range()
是一个常见的误解,因为 range()
的实现有些不直观(在我看来)。最后一个数字 不在 范围内,所以 list(range(0, 6))
等于 [0, 1, 2, 3, 4, 5]
.
我正在尝试编写执行以下操作的代码:
第一行,输入两个space分隔的整数,第一个表示后面要输入的列表的长度,第二个表示一个int,叫做
k
,稍后会用到。第二行会输入我说的列表
预期输出满足以下条件:
对 的 ( i , j ),其中 ik
整除。
问题:我不知道为什么我的代码忽略了一些对。我已经在许多测试用例中尝试过它,但 90% 的测试都失败了,因为它输出的对数比预期的要少。我知道我非常接近正确的结果,我只是不知道我做错了什么。
有关我希望我的代码执行的操作的更准确信息,请查看此 link(无需注册或登录): https://www.hackerrank.com/challenges/divisible-sum-pairs/problem
这是我的代码:
#https://www.hackerrank.com/challenges/divisible-sum-pairs/problem
samples_and_k = [int(x) for x in input().split()]
num_list = [int(y) for y in input().split()]
num_list.sort()
counter =0
for i in range(0, samples_and_k[0]-1):
for j in range(i+1, samples_and_k[0]-1):
if (num_list[i]+num_list[i+1]) % samples_and_k[1] == 0:
counter += 1
print(counter)
这是一个例子:
输入:
6 3
1 3 2 6 1 2
预期输出:
5
我的代码输出:
3
问题是你在使用range()
时减去1:
for i in range(0, samples_and_k[0]-1):
for j in range(i+1, samples_and_k[0]-1):
if (num_list[i]+num_list[i+1]) % samples_and_k[1] == 0:
counter += 1
应该是:
for i in range(0, samples_and_k[0]):
for j in range(i+1, samples_and_k[0]):
if (num_list[i]+num_list[i+1]) % samples_and_k[1] == 0:
counter += 1
使用 range()
是一个常见的误解,因为 range()
的实现有些不直观(在我看来)。最后一个数字 不在 范围内,所以 list(range(0, 6))
等于 [0, 1, 2, 3, 4, 5]
.