# Closest sum partition (into two subsets) of numbers from 1 to n

• Last Updated : 11 May, 2021

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:
Output:
A = {1, 2} and B = {3} ans |sum(A) – sum(B)| = |3 – 3| = 0.
Input:
Output:
A = {1, 3, 4} and B = {2, 5} ans |sum(A) – sum(B)| = |3 – 3| = 0.
Input:
Output:

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

 ``

## Javascript

 ``
Output:
`1`

My Personal Notes arrow_drop_up