- Trending Categories
- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP

- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who

Suppose we have an array of numbers and have another number k, we have to check whether given array can be divided into pairs such that the sum of every pair is divisible by k or not.

So, if the input is like arr = [5, 15, 6, 9] k = 7, then the output will be True as we can take pairs like (5, 9) and (15, 6).

To solve this, we will follow these steps −

- n := size of array
- if n is odd, then
- return False

- occurrences := an empty dictionary, if some key is not there return 0 as the value of that missing key
- for i in range 0 to n, do
- increase occurrences[((array[i] mod k) + k) mod k] by 1

- for i in range 0 to n, do
- remainder := ((array[i] mod k) + k) mod k
- if 2 * remainder is same as k, then
- if occurrences[remainder] is odd, then
- return False

- if occurrences[remainder] is odd, then
- otherwise when remainder is same as 0, then
- if occurrences[remainder] AND 1 is non-zero, then
- return False

- if occurrences[remainder] AND 1 is non-zero, then
- otherwise when occurrences[remainder] is not same as occurrences[k - remainder], then
- return False

- return True

Let us see the following implementation to get better understanding −

from collections import defaultdict def solve(array, k): n = len(array) if n % 2 != 0: return False occurrences = defaultdict(lambda : 0) for i in range(0, n): occurrences[((array[i] % k) + k) % k] += 1 for i in range(0, n): remainder = ((array[i] % k) + k) % k if (2 * remainder == k): if (occurrences[remainder] % 2 != 0): return False elif (remainder == 0): if (occurrences[remainder] & 1): return False elif (occurrences[remainder] != occurrences[k - remainder]): return False return True arr = [5, 15, 6, 9] k = 7 print(solve(arr, k))

[5, 15, 6, 9], 7

True

- Related Questions & Answers
- Check if a sorted array can be divided in pairs whose sum is k in Python
- Count pairs in array whose sum is divisible by K in C++
- Count pairs in array whose sum is divisible by 4 in C++
- Check if an array of 1s and 2s can be divided into 2 parts with equal sum in Python
- Program to check if array pairs are divisible by k or not using Python
- Check if array sum can be made K by three operations on it in Python
- Find if array can be divided into two subarrays of equal sum in C++
- Program to check whether list can be partitioned into pairs where sum is multiple of k in python
- Number of pairs from the first N natural numbers whose sum is divisible by K in C++
- Check if array can be divided into two sub-arrays such that their absolute difference is Ks in Python
- Find the sums for which an array can be divided into subarrays of equal sum in Python
- Count subarrays whose product is divisible by k in C++
- Check if a large number can be divided into two or more segments of equal sum in C++
- Check if any square (with one colored cell) can be divided into two equal parts in Python
- Maximize the number of sum pairs which are divisible by K in C++

Advertisements