Related Articles
Break the number into three parts
• Difficulty Level : Medium
• Last Updated : 05 Dec, 2018

Given a really large number, break it into 3 whole numbers such that they sum up to the original number and count number of ways to do so.

Examples :

```Input : 3
Output : 10
The possible combinations where the sum
of the numbers is equal to 3 are:
0+0+3 = 3
0+3+0 = 3
3+0+0 = 3
0+1+2 = 3
0+2+1 = 3
1+0+2 = 3
1+2+0 = 3
2+0+1 = 3
2+1+0 = 3
1+1+1 = 3

Input : 6
Output : 28
```

A total of 10 ways, so answer is 10.

## Recommended: Please solve it on “PRACTICE ” first, before moving on to the solution.

Naive Approach: Try all combinations from 0 to the given number and check if they add upto the given number or not, if they do, increase the count by 1 and continue the process.

## C/C++

 `// C++ program to count number of ways to break``// a number in three parts.``#include ``#define ll long long int``using` `namespace` `std;`` ` `// Function to count number of ways``// to make the given number n``ll count_of_ways(ll n)``{``    ``ll count = 0;``    ``for` `(``int` `i = 0; i <= n; i++)``        ``for` `(``int` `j = 0; j <= n; j++)``            ``for` `(``int` `k = 0; k <= n; k++)``                ``if` `(i + j + k == n)``                    ``count++;``    ``return` `count;``}`` ` `// Driver Function``int` `main()``{``    ``ll n = 3;``    ``cout << count_of_ways(n) << endl;``    ``return` `0;``}`

## Java

 `// Java program to count number of ways to break``// a number in three parts``import` `java.io.*;`` ` `class` `GFG {``    ``// Function to count number of ways``    ``// to make the given number n``    ``static` `long` `count_of_ways(``long` `n)``    ``{``        ``long` `count = ``0``;``        ``for` `(``int` `i = ``0``; i <= n; i++)``            ``for` `(``int` `j = ``0``; j <= n; j++)``                ``for` `(``int` `k = ``0``; k <= n; k++)``                    ``if` `(i + j + k == n)``                        ``count++;``        ``return` `count;``    ``}`` ` `    ``// driver program``    ``public` `static` `void` `main(String[] args)``    ``{``        ``long` `n = ``3``;``        ``System.out.println(count_of_ways(n));``    ``}``}`` ` `// Contributed by Pramod Kumar`

## Python3

 `# Python3 program to count number of ``# ways to break``# a number in three parts.`` ` `# Function to count number of ways``# to make the given number n``def` `count_of_ways(n):`` ` `    ``count ``=` `0``    ``for` `i ``in` `range``(``0``, n``+``1``):``        ``for` `j ``in` `range``(``0``, n``+``1``):``            ``for` `k ``in` `range``(``0``, n``+``1``):``                ``if``(i ``+` `j ``+` `k ``=``=` `n):``                    ``count ``=` `count ``+` `1``    ``return` `count`` ` `# Driver Function``if` `__name__``=``=``'__main__'``:``    ``n ``=` `3``    ``print``(count_of_ways(n))`` ` ` ` `# This code is contributed by``# Sanjit_Prasad`

## C#

 `// C# program to count number of ways ``// to break a number in three parts``using` `System;`` ` `class` `GFG {``     ` `    ``// Function to count number of ways``    ``// to make the given number n``    ``static` `long` `count_of_ways(``long` `n)``    ``{``        ``long` `count = 0;``        ``for` `(``int` `i = 0; i <= n; i++)``            ``for` `(``int` `j = 0; j <= n; j++)``                ``for` `(``int` `k = 0; k <= n; k++)``                    ``if` `(i + j + k == n)``                        ``count++;``        ``return` `count;``    ``}`` ` `    ``// driver program``    ``public` `static` `void` `Main()``    ``{``        ``long` `n = 3;``        ``Console.WriteLine(count_of_ways(n));``    ``}``}`` ` `// This code is Contributed by vt_m.`

## PHP

 ``

Output :

`10`

Time Complexity : O(n3)

Efficient Approach: If we carefully observe the test cases then we realize that the number of ways to break a number n into 3 parts is equal to (n+1) * (n+2) / 2.

## C/C++

 `// C++ program to count number of ways to break``// a number in three parts.``#include ``#define ll long long int``using` `namespace` `std;`` ` `// Function to count number of ways``// to make the given number n``ll count_of_ways(ll n)``{``    ``ll count;``    ``count = (n + 1) * (n + 2) / 2;``    ``return` `count;``}`` ` `// Driver Function``int` `main()``{``    ``ll n = 3;``    ``cout << count_of_ways(n) << endl;``    ``return` `0;``}`

## Java

 `// Java program to count number of ways to break``// a number in three parts``import` `java.io.*;`` ` `class` `GFG {``    ``// Function to count number of ways``    ``// to make the given number n``    ``static` `long` `count_of_ways(``long` `n)``    ``{``        ``long` `count = ``0``;``        ``count = (n + ``1``) * (n + ``2``) / ``2``;``        ``return` `count;``    ``}`` ` `    ``// driver program``    ``public` `static` `void` `main(String[] args)``    ``{``        ``long` `n = ``3``;``        ``System.out.println(count_of_ways(n));``    ``}``}`` ` `// Contributed by Pramod Kumar`

## Python3

 `# Python 3 program to count number of ``# ways to break a number in three parts.`` ` `# Function to count number of ways``# to make the given number n``def` `count_of_ways(n):``    ``count ``=` `0``    ``count ``=` `(n ``+` `1``) ``*` `(n ``+` `2``) ``/``/` `2``    ``return` `count`` ` `# Driver code``n ``=` `3``print``(count_of_ways(n))`` ` `# This code is contributed by Shrikant13`

## C#

 `// C# program to count number of ways to``// break a number in three parts``using` `System;`` ` `class` `GFG {``     ` `    ``// Function to count number of ways``    ``// to make the given number n``    ``static` `long` `count_of_ways(``long` `n)``    ``{``        ``long` `count = 0;``        ``count = (n + 1) * (n + 2) / 2;``        ``return` `count;``    ``}`` ` `    ``// driver program``    ``public` `static` `void` `Main()``    ``{``        ``long` `n = 3;``        ``Console.WriteLine(count_of_ways(n));``    ``}``}`` ` `// This code is Contributed by vt_m.`

## PHP

 ``

Output :
`10`

Time Complexity: O(1)