Related Articles

# Find a number x such that sum of x and its digits is equal to given n.

• Difficulty Level : Easy
• Last Updated : 28 Apr, 2021

Given a positive number n. We need to find a number x such that sum of digits of x to itself is equal to n.
If no such x is possible print -1.
Examples:

```Input : n = 21
Output : x = 15
Explanation : x + its digit sum = 15 + 1 + 5 = 21

Input : n = 5
Output : -1```

We iterate from 1 to n and for each intermediate number, x find its digit sum and then add that to x, if that is equal to n then x will be our required answer.

```    // iterate from 1 to n. For every no.
// check if its digit sum with it is
// equal to n.
for (int i = 0; i <= n; i++)
if (i + digSum(i)  == n)
return i;

return -1;```

## C++

 `// CPP program to find x such that x +``// digSum(x) is equal to n.``#include ``using` `namespace` `std;` `// utility function for digit sum``int` `digSum(``int` `n)``{``    ``int` `sum = 0, rem = 0;``    ``while` `(n) {``        ``rem = n % 10;``        ``sum += rem;``        ``n /= 10;``    ``}``    ``return` `sum;``}` `// function for finding x``int` `findX(``int` `n)``{``    ``// iterate from 1 to n. For every no.``    ``// check if its digit sum with it is``    ``// equal to n.``    ``for` `(``int` `i = 0; i <= n; i++)``        ``if` `(i + digSum(i) == n)``            ``return` `i;``    ` `    ``// if no such i found return -1``    ``return` `-1;``}` `// driver function``int` `main()``{``    ``int` `n = 43;``    ``cout << ``"x = "` `<< findX(n);``    ``return` `0;``}`

## Java

 `// Java program to find x such that x +``// digSum(x) is equal to n.``class` `GFG``{``    ` `    ``// utility function for digit sum``    ``static` `int` `digSum(``int` `n)``    ``{``        ``int` `sum = ``0``, rem = ``0``;``        ` `        ``while` `(n>``0``) {``            ``rem = n % ``10``;``            ``sum += rem;``            ``n /= ``10``;``        ``}``        ` `        ``return` `sum;``    ``}``    ` `    ``// function for finding x``    ``static` `int` `findX(``int` `n)``    ``{``        ` `        ``// iterate from 1 to n. For every no.``        ``// check if its digit sum with it is``        ``// equal to n.``        ``for` `(``int` `i = ``0``; i <= n; i++)``            ``if` `(i + digSum(i) == n)``                ``return` `i;``        ` `        ``// if no such i found return -1``        ``return` `-``1``;``    ``}``    ` `    ``// Driver code``    ``public` `static` `void` `main (String[] args)``    ``{``        ``int` `n = ``43``;``        ` `        ``System.out.println(``"x = "``+findX(n));``    ``}``}` `// This code is contributed by Anant Agarwal.`

## Python3

 `# Python3 program to find``# x such that dx + igSum(x)``# is equal to n.` `# utility function``# for digit sum``def` `digSum(n):``    ``sum` `=` `0``;``    ``rem ``=` `0``;``    ``while``(n):``        ``rem ``=` `n ``%` `10``;``        ``sum` `=` `sum` `+` `rem;``        ``n ``=` `int``(n ``/` `10``);``    ``return` `sum``;` `# function for finding x``def` `findX(n):``    ` `    ``# iterate from 1 to n.``    ``# For every no.``    ``# check if its digit``    ``# sum with it is# equal to n.``    ``for` `i ``in` `range``(n ``+` `1``):``        ``if` `(i ``+` `digSum(i) ``=``=` `n):``            ``return` `i;``    ` `    ``# if no such i``    ``# found return -1``    ``return` `-``1``;` `# Driver Code``n ``=` `43``;``print``(``"x = "``, findX(n));` `# This code is contributed by mits`

## C#

 `// C# program to find x such that``// x + digSum(x) is equal to n.``using` `System;` `class` `GFG {``    ` `    ``// utility function for digit sum``    ``static` `int` `digSum(``int` `n)``    ``{``        ``int` `sum = 0, rem = 0;``        ` `        ``while` `(n > 0)``        ``{``            ``rem = n % 10;``            ``sum += rem;``            ``n /= 10;``        ``}``        ` `        ``return` `sum;``    ``}``    ` `    ``// function for finding x``    ``static` `int` `findX(``int` `n)``    ``{``        ` `        ``// iterate from 1 to n. For every no.``        ``// check if its digit sum with it is``        ``// equal to n.``        ``for` `(``int` `i = 0; i <= n; i++)``            ``if` `(i + digSum(i) == n)``                ``return` `i;``        ` `        ``// if no such i found return -1``        ``return` `-1;``    ``}``    ` `    ``// Driver code``    ``public` `static` `void` `Main()``    ``{``        ``int` `n = 43;``        ` `        ``Console.Write(``"x = "` `+ findX(n));``    ``}``}` `// This code is contributed by vt_m.`

## PHP

 ``

## Javascript

 ``

Output:

`x = 35`