Ванечка подарил Анечке массив из N чисел. У Анечки есть любимое счастливое число — оно всегда помогает ей сдавать даже неправильные решения задач. Анечке стало очень интересно, сколько пар чисел из подаренного массива в сумме дают число K. К сожалению, сейчас она занята подготовкой к контрольной и не может это узнать. Помогите ей!
Для решения этой задачи можно использовать два вложенных цикла. Во внешнем цикле нужно перебирать все числа массива, а во внутреннем — проверять, равна ли сумма текущего числа с каждым последующим числом числу K. Если такая пара чисел найдена, то нужно увеличить счётчик найденных пар на 1.
Вот пример реализации этого алгоритма на Python:
```python
def count_pairs(arr, k):
count = 0
for i in range(len(arr)):
for j in range(i + 1, len(arr)):
if arr + arr[j] == k:
count += 1
return count
N = int(input("Введите количество чисел в массиве: ")
arr = [int(input(f"Введите {N} чисел через пробел: ".split()) for _ in range(N)]
K = int(input("Введите число K: ")
print(f"{count_pairs(arr, K)} пар чисел из подаренного массива в сумме дают число {K}"
```
Этот код запрашивает у пользователя количество чисел в массиве, сами числа и число K, после чего выводит количество пар чисел, которые в сумме дают K.
int countPairsWithSumK(int arr[], int N, int K) {
std::unordered_map<int, int> countMap;
int pairCount = 0;
for (int i = 0; i < N; i++) {
int complement = K - arr;
if (countMap.find(complement)!= countMap.end()) {
pairCount += countMap[complement];
}
countMap[arr]++;
}
return pairCount;
}
int main() {
int arr[] = {1, 5, 7, 1, 9, 5};
int N = sizeof(arr) / sizeof(arr[0]);
int K = 10;
int result = countPairsWithSumK(arr, N, K);
std::cout << "Количество пар с суммой " << K << ": " << result << std::endl;