# Check if a number can be represented as a sum of 2 triangular numbers

Given an integer N, the task is to find out whether it can be written as a sum of 2 triangular numbers (which may or may not be distinct).

Examples:

```Input: N = 24
Output: YES
24 can be represented as 3+21.

Input: N = 15
Output: NO
```

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

Approach:
Consider all triangular numbers less than N i.e. sqrt(N) numbers. Let’s add them to a set, and for each triangular number X we check if N-X is present in the set. If it is true with any triangular number, then the answer is YES, otherwise the answer is NO.

Below is the implemnetation of the above approach:

## C++

 `// C++ implementation of the above approach ` `#include ` `using` `namespace` `std; ` ` `  `// Function to check if it is possible or not ` `bool` `checkTriangularSumRepresentation(``int` `n) ` `{ ` `    ``unordered_set<``int``> tri; ` `    ``int` `i = 1; ` ` `  `    ``// Store all triangular numbers up to N in a Set ` `    ``while` `(1) { ` `        ``int` `x = i * (i + 1) / 2; ` `        ``if` `(x >= n) ` `            ``break``; ` `        ``tri.insert(x); ` `        ``i++; ` `    ``} ` `  `  `    ``// Check if a pair exists ` `    ``for` `(``auto` `tm` `: tri) ` `        ``if` `(tri.find(n - ``tm``) != tri.end()) ` `            ``return` `true``; ` `    ``return` `false``; ` `} ` ` `  `// Driver Code ` `int` `main() ` `{ ` `    ``int` `n = 24; ` `    ``checkTriangularSumRepresentation(n) ? cout << ``"Yes"` `                                        ``: cout << ``"No"``; ` ` `  `    ``return` `0; ` `} `

## Python 3

 `# Python3 implementation of the above approach  ` ` `  `# Function to check if it is possible or not  ` `def` `checkTriangularSumRepresentation(n) :  ` `     `  `    ``tri ``=` `list``();  ` `    ``i ``=` `1``;  ` ` `  `    ``# Store all triangular numbers  ` `    ``# up to N in a Set  ` `    ``while` `(``1``) : ` `        ``x ``=` `i ``*` `(i ``+` `1``) ``/``/` `2``;  ` `        ``if` `(x >``=` `n) : ` `            ``break``;  ` `             `  `        ``tri.append(x);  ` `        ``i ``+``=` `1``;  ` ` `  `    ``# Check if a pair exists  ` `    ``for` `tm ``in` `tri : ` `        ``if` `n ``-` `tm ``in` `tri: ` `            ``return` `True``;  ` `             `  `    ``return` `False``;  ` ` `  `# Driver Code  ` `if` `__name__ ``=``=` `"__main__"` `: ` `    ``n ``=` `24``;  ` `     `  `    ``if` `checkTriangularSumRepresentation(n) : ` `        ``print``(``"Yes"``) ` `    ``else` `: ` `        ``print``(``"No"``) ` ` `  `# This code is contributed by Ryuga      `

Output:

```Yes
```

Time Complexity: O(Sqrt(N))

My Personal Notes arrow_drop_up

Article Tags :
Practice Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.