Related Articles
Closest sum partition (into two subsets) of numbers from 1 to n
• Last Updated : 07 Feb, 2019

Given an integer sequence 1, 2, 3, 4, …, n. The task is to divide it into two sets A and B in such a way that each element belongs to exactly one set and |sum(A) – sum(B)| is the minimum possible. Print the value of |sum(A) – sum(B)|.

Examples:

Input: 3
Output: 0
A = {1, 2} and B = {3} ans |sum(A) – sum(B)| = |3 – 3| = 0.

Input: 6
Output: 0
A = {1, 3, 4} and B = {2, 5} ans |sum(A) – sum(B)| = |3 – 3| = 0.

Input: 5
Output: 1

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach: Take mod = n % 4,

1. If mod = 0 or mod = 3 then print 0.
2. If mod = 1 or mod = 2 then print 1.

This is because the groups will be chosen as A = {N, N – 3, N – 4, N – 7, N – 8, …..}, B = {N – 1, N – 2, N – 5, N – 6, …..}
Starting from N to 1, place 1st element in group A then alternate every 2 elements in B, A, B, A, …..

• When n % 4 = 0: N = 8, A = {1, 4, 5, 8} and B = {2, 3, 6, 7}
• When n % 4 = 1: N = 9, A = {1, 4, 5, 8, 9} and B = {2, 3, 6, 7}
• When n % 4 = 2: N = 10, A = {1, 4, 5, 8, 9} and B = {2, 3, 6, 7, 10}
• When n % 4 = 3: N = 11, A = {1, 4, 5, 8, 9} and B = {2, 3, 6, 7, 10, 11}

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach``#include ``using` `namespace` `std;`` ` `// Function to return the minimum required``// absolute difference``int` `minAbsDiff(``int` `n)``{``    ``int` `mod = n % 4;`` ` `    ``if` `(mod == 0 || mod == 3)``        ``return` `0;`` ` `    ``return` `1;``}`` ` `// Driver code``int` `main()``{``    ``int` `n = 5;``    ``cout << minAbsDiff(n);`` ` `    ``return` `0;``}`

## Java

 `// Java implementation of the approach``class` `GFG ``{``     ` `// Function to return the minimum required ``// absolute difference `` ` `    ``static` `int` `minAbsDiff(``int` `n)``    ``{``        ``int` `mod = n % ``4``;``        ``if` `(mod == ``0` `|| mod == ``3``) ``        ``{``            ``return` `0``;``        ``}``        ``return` `1``;``    ``}`` ` `    ``// Driver code ``    ``public` `static` `void` `main(String[] args) ``    ``{``        ``int` `n = ``5``;``        ``System.out.println(minAbsDiff(n));``    ``}``}`` ` `// This code is contributed by Rajput-JI`

## Python 3

 `# Python3 implementation of the approach `` ` `# Function to return the minimum required ``# absolute difference ``def` `minAbsDiff(n) :``    ``mod ``=` `n ``%` `4``; `` ` `    ``if` `(mod ``=``=` `0` `or` `mod ``=``=` `3``) :``        ``return` `0``; `` ` `    ``return` `1``; `` ` `# Driver code ``if` `__name__ ``=``=` `"__main__"` `:`` ` `    ``n ``=` `5``; ``    ``print``(minAbsDiff(n)) ``     ` `# This code is contributed by Ryuga`

## C#

 `// C# implementation of the ``// above approach``using` `System;`` ` `class` `GFG``{``         ` `    ``// Function to return the minimum  ``    ``// required absolute difference ``    ``static` `int` `minAbsDiff(``int` `n)``    ``{``        ``int` `mod = n % 4;``        ``if` `(mod == 0 || mod == 3) ``        ``{``            ``return` `0;``        ``}``        ``return` `1;``    ``}`` ` `    ``// Driver code ``    ``static` `public` `void` `Main ()``    ``{``        ``int` `n = 5;``        ``Console.WriteLine(minAbsDiff(n));``    ``}``}`` ` `// This code is contributed by akt_mit `

## PHP

 ``
Output:
```1
```

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up