
안녕하세요. 톤입니다.
이 게시물 파이썬 3 버전별로 해결되었습니다.
문제 소스
https://www.acmicpc.net/problem/3273
3273호: 두 수의 합
n개의 서로 다른 양의 정수 a1, a2, …, an의 시퀀스가 있습니다. ai의 값은 1보다 크거나 같고 1000000보다 작거나 같은 자연수입니다. 주어진 자연수 x에서 ai + aj = x(1 ≤ i < j ≤ n)
www.acmicpc.net
문제
n개의 서로 다른 양의 정수 a1, a2, …, an의 시퀀스가 있습니다. ai의 값은 1보다 크거나 같고 1000000보다 작거나 같은 자연수입니다. 자연수 x가 주어졌을 때 ai + aj = x ( 1 ≤ i < j ≤ n).
기입
첫 번째 줄은 시퀀스의 크기 n을 제공합니다. 다음 줄은 시퀀스에 포함된 번호를 제공합니다. x는 세 번째 줄에 지정됩니다. (1≤n≤100000, 1≤x≤2000000)
누르다
문제의 조건을 만족하는 쌍의 수를 반환합니다.
암호
n = int(input())
sequence = list(map(int, input().split()))
x = int(input())
count = {}
for items in sequence:
count(items) = count.get(items, 0) + 1
pair_count = 0
for num in sequence:
complement = x - num
if complement in count:
pair_count += count(complement)
pair_count //= 2
print(pair_count)
설명
부정확하거나 질문이 있는 경우 의견에 지식을 자유롭게 공유하십시오.
더 좋은 글을 쓰도록 노력하겠습니다.
다음 포스트에서 만나요.


