本文主要是介绍洛谷_P1102 A-B 数对_python写法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
P1102 A-B 数对 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
解法一:
n, c = map(int,input().split())data = list(map(int,input().split())) data.sort() maxx = max(data)sum = 0 l = [0 for _ in range(maxx+1)] for i in data:l[i] += 1 for b in range(1, maxx+1):if b+c <= maxx and l[b] != 0:num = l[b+c] * l[b]sum += numprint(sum)
一开始用的列表,但是有一个案例无法通过,现在就改成用字典了。
n, c = map(int,input().split())data = list(map(int,input().split()))sum = 0 dict = {} for i in data:if i not in dict.keys():dict[i] = 1else:dict[i] += 1 for i in data:if i+c in dict.keys():sum += dict[i+c] print(sum)
解法二:
学习bisect库,这个是python的内置库,蓝桥杯应该可以直接用的吧。
Python P1102 A-B 数对-CSDN博客
Python3二分查找库函数bisect(), bisect_left()和bisect_right()介绍-CSDN博客
这篇关于洛谷_P1102 A-B 数对_python写法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!