📌  相关文章
📜  国际空间研究组织 | ISRO CS 2017 – 5 月 |问题 75(1)

📅  最后修改于: 2023-12-03 15:07:34.959000             🧑  作者: Mango

国际空间研究组织 | ISRO CS 2017 – 5 月 | 问题 75

这是一个来自国际空间研究组织(ISRO)在2017年5月所发布的问题。

题目描述

给定一个列表和一个目标值,找到列表中两个不同的元素,它们的和等于目标值。你可以假设列表中没有重复的元素。

输入格式

输入的第一行包含一个整数 $T$,表示测试用例的数量。 每个测试用例包含两行。 每个测试用例的第一行包含一个整数 $N$,表示列表中的元素数。 第二行包含 $N$个以空格分隔的整数,表示列表中的元素。 最后一行包含一个整数 $X$,表示目标值。

输出格式

对于每个测试用例,如果找到两个不同的元素,它们的和等于目标值,则打印“是”,否则打印“否”。

代码示例
Python
t = int(input().strip())
for _ in range(t):
    n = int(input().strip())
    lst = list(map(int, input().strip().split()))
    x = int(input().strip())
    s = set(lst)
    found = False
    for val in lst:
        if x-val in s and x-val != val:
            found = True
            break
    print('Yes' if found else 'No')
Java
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int t = scanner.nextInt();
        while (t-- > 0) {
            int n = scanner.nextInt();
            int[] arr = new int[n];
            for (int i = 0; i < n; ++i) {
                arr[i] = scanner.nextInt();
            }
            int x = scanner.nextInt();
            Set<Integer> set = new HashSet<>();
            boolean found = false;
            for (int val : arr) {
                if (set.contains(x-val) && x-val != val) {
                    found = true;
                    break;
                } else {
                    set.add(val);
                }
            }
            System.out.println(found ? "Yes" : "No");
        }
    }
}
C++
#include <iostream>
#include <unordered_set>

using namespace std;

int main()
{
    int t;
    cin >> t;
    while (t--) {
        int n;
        cin >> n;
        int arr[n];
        for (int i = 0; i < n; ++i) {
            cin >> arr[i];
        }
        int x;
        cin >> x;
        unordered_set<int> s;
        bool found = false;
        for (int val : arr) {
            if (s.count(x-val) > 0 && x-val != val) {
                found = true;
                break;
            } else {
                s.insert(val);
            }
        }
        if (found) {
            cout << "Yes" << endl;
        } else {
            cout << "No" << endl;
        }
    }
    return 0;
}

以上是三种不同语言的实现,详细注释请见代码。