Related Articles
Count of ways to write N as a sum of three numbers
• Last Updated : 20 Apr, 2021

Given a positive integer N, count number of ways to write N as a sum of three numbers. For numbers which are not expressible print -1.
Examples:

Input: N = 4
Output:
Explanation:
( 1 + 1 + 2 ) = 4
( 1 + 2 + 1 ) = 4
( 2 + 1 + 1 ) = 4.
So in total, there are 3 ways.
Input: N = 5
Output:
( 1 + 1 + 3 ) = 5
( 1 + 3 + 1 ) = 5
( 3 + 1 + 1 ) = 5
( 1 + 2 + 2 ) = 5
( 2 + 2 + 1 ) = 5
( 2 + 1 + 2 ) = 5.
So in total, there are 6 ways

Approach: To solve the problem mentioned above if we take a closer look we will observe a pattern in solution to the question. For all the numbers that are greater than 2 we get a series 3, 6, 10, 15, 25 and so on, which is nothing but the sum of first N-1 natural numbers.
Below is the implementation of the above approach:

## C++

 `// C++ program to count the total number of``// ways to write N as a sum of three numbers` `#include ``using` `namespace` `std;` `// Function to find the number of ways``void` `countWays(``int` `n)``{``    ``// Check if number is less than 2``    ``if` `(n <= 2)``        ``cout << ``"-1"``;` `    ``else` `{``        ``// Calculate the sum``        ``int` `ans = (n - 1) * (n - 2) / 2;` `        ``cout << ans;``    ``}``}` `// Driver code``int` `main()``{``    ``int` `N = 5;` `    ``countWays(N);` `    ``return` `0;``}`

## Java

 `// Java program to count the total number of``// ways to write N as a sum of three numbers``class` `GFG{` `// Function to find the number of ways``static` `void` `countWays(``int` `n)``{``    ` `    ``// Check if number is less than 2``    ``if` `(n <= ``2``)``    ``{``        ``System.out.print(``"-1"``);``    ``}``    ``else``    ``{``        ` `        ``// Calculate the sum``        ``int` `ans = (n - ``1``) * (n - ``2``) / ``2``;``        ``System.out.print(ans);``    ``}``}` `// Driver code``public` `static` `void` `main(String[] args)``{``    ``int` `N = ``5``;``    ``countWays(N);``}``}` `// This code is contributed by Amit Katiyar`

## Python3

 `# Python3 program to count the total number of``# ways to write N as a sum of three numbers``def` `countWays(N):` `    ``# Check if number is less than 2``    ``if` `(N <``=` `2``):``        ``print``(``"-1"``)``    ``else``:``        ` `        ``# Calculate the sum``        ``ans ``=` `(N ``-` `1``) ``*` `(N ``-` `2``) ``/` `2``        ` `    ``print``(ans)` `# Driver code``if` `__name__ ``=``=` `'__main__'``:``    ` `    ``N ``=` `5``    ``countWays(N)` `# This code is contributed by coder001`

## C#

 `// C# program to count the total number of``// ways to write N as a sum of three numbers``using` `System;` `class` `GFG{``    ` `// Function to find the number of ways``static` `void` `countWays(``int` `n)``{``        ` `    ``// Check if number is less than 2``    ``if` `(n <= 2)``    ``{``        ``Console.WriteLine(``"-1"``);``    ``}``    ``else``    ``{` `        ``// Calculate the sum``        ``int` `ans = (n - 1) * (n - 2) / 2;``        ``Console.WriteLine(ans);``    ``}``}` `// Driver code    ``static` `void` `Main()``{``    ``int` `N = 5;``    ``countWays(N);``}``}` `// This code is contributed by divyeshrabadiya07   `

## Javascript

 ``
Output:
`6`

Time Complexity: O(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