# Find two numbers whose sum is N and does not contain any digit as K

Given an integer N, the task is to find two numbers a and b such that a + b = N, where a and b doesn’t contain any of the digits as K. Print -1 if not possible.

Examples:

Input: N = 100, K = 0
Output: 1 99
Explanation:
1 + 99 = 100 and none of the numbers has 0 in it.

Input: N = 123456789, K = 2
Output: 3456790 119999999
Explanation:
3456790 + 119999999 = 123456789 and none of the numbers has 2 in it.

Approach: The idea is to iterate a loop from i = 1 to n-1, and check if i and (n – i) do not contain K. If it doesn’t contain any digit as then print the two numbers and break out of the loop.

For Example: N = 11, k = 0
i = 1, N – 1 = 10 but 10 contains 0, so increment i
i = 2, N – 1 = 9, so print this i and n – i.

Below is the implementation of the above approach:

## C++

 `// C++ program for ` `// the above approach` `#include` `using` `namespace` `std;`   `int` `freqCount(string str, ``char` `k)` `{` `    ``int` `count = 0;` `    ``for``(``int` `i = 0; ` `            ``i < str.size(); i++)` `    ``{` `        ``if` `(str[i] == k)` `        ``count++;` `    ``}` `    ``return` `count;` `}`   `// Function to find two ` `// numbers whose sum` `// is N and do not ` `// contain any digit as k` `void` `findAandB(``int` `n, ``int` `k)` `{` `    ``int` `flag = 0;` `    `  `    ``// Check every number i and (n-i)` `    ``for``(``int` `i = 1; i < n; i++)` `    ``{` `        ``// Check if i and n-i doesn't` `        ``// contain k in them print i and n-i` `        ``if` `(freqCount(to_string(i), ` `                     ``(``char``)(k + 48)) == 0 and ` `            ``freqCount(to_string(n - i), ` `                     ``(``char``)(k + 48)) == 0)` `        ``{` `            ``cout << ``"("` `<< i << ``", "` `                 ``<< n - i << ``")"``;` `            ``flag = 1;` `            ``break``;` `        ``}` `    ``}` `    `  `    ``// Check if flag is 0 ` `    ``// then print -1` `    ``if` `(flag == 0)` `        ``cout << -1;` `}`   `// Driver Code` `int` `main()` `{ ` `    `  `    ``// Given N and K` `    ``int` `N = 100;` `    ``int` `K = 0;` `    `  `    ``// Function call` `    ``findAandB(N, K);` `    ``return` `0;` `}`   `// This code is contributed by Rajput-Ji`

## Java

 `// Java program for the above approach` `import` `java.util.*;`   `class` `GFG{`   `static` `int` `freqCount(String str, ``char` `k)` `{` `    ``int` `count = ``0``;` `    ``for``(``int` `i = ``0``; i < str.length(); i++)` `    ``{` `        ``if` `(str.charAt(i) == k)` `            ``count++;` `    ``}` `    ``return` `count;` `}`   `// Function to find two numbers ` `// whose sum is N and do not` `// contain any digit as k` `static` `void` `findAandB(``int` `n, ``int` `k)` `{` `    ``int` `flag = ``0``;`   `    ``// Check every number i and (n-i)` `    ``for``(``int` `i = ``1``; i < n; i++) ` `    ``{` `        `  `        ``// Check if i and n-i doesn't` `        ``// contain k in them print i and n-i` `        ``if` `(freqCount(Integer.toString(i),` `                     ``(``char``)(k + ``48``)) == ``0` `&&` `            ``freqCount(Integer.toString(n - i),` `                     ``(``char``)(k + ``48``)) == ``0``) ` `        ``{` `            ``System.out.print(``"("` `+ i + ``", "` `+` `                              ``(n - i) + ``")"``);` `            ``flag = ``1``;` `            ``break``;` `        ``}` `    ``}`   `    ``// Check if flag is 0` `    ``// then print -1` `    ``if` `(flag == ``0``)` `        ``System.out.print(-``1``);` `}`   `// Driver code` `public` `static` `void` `main(String[] args)` `{`   `    ``// Given N and K` `    ``int` `N = ``100``;` `    ``int` `K = ``0``;`   `    ``// Function call` `    ``findAandB(N, K);` `}` `}`   `// This code is contributed by offbeat`

## Python

 `# Python program for the above approach`   `# Function to find two numbers whose sum` `# is N and do not contain any digit as k` `def` `findAandB(n, k):` `  `  `    ``flag ``=` `0`   `    ``# Check every number i and (n-i)` `    ``for` `i ``in` `range``(``1``, n):`   `        ``# Check if i and n-i doesn't` `        ``# contain k in them print i and n-i` `        ``if` `str``(i).count(``chr``(k ``+` `48``)) ``=``=` `0` `\` `        ``and` `str``(n``-``i).count(``chr``(k ``+` `48``)) ``=``=` `0``:` `            ``print``(i, n``-``i)` `            ``flag ``=` `1` `            ``break`   `    ``# check if flag is 0 then print -1` `    ``if``(flag ``=``=` `0``):` `        ``print``(``-``1``)`   `# Driver Code` `if` `__name__ ``=``=` `'__main__'``:` `  `  `  ``# Given N and K` `    ``N ``=` `100` `    ``K ``=` `0` `    `  `    ``# Function Call` `    ``findAandB(N, K)`

## C#

 `// C# program for the ` `// above approach` `using` `System;` `class` `GFG{`   `static` `int` `freqCount(String str, ` `                     ``char` `k)` `{` `  ``int` `count = 0;` `  `  `  ``for``(``int` `i = 0; i < str.Length; i++)` `  ``{` `    ``if` `(str[i] == k)` `      ``count++;` `  ``}` `  `  `  ``return` `count;` `}`   `// Function to find two numbers ` `// whose sum is N and do not` `// contain any digit as k` `static` `void` `findAandB(``int` `n, ``int` `k)` `{` `  ``int` `flag = 0;`   `  ``// Check every number i and (n-i)` `  ``for``(``int` `i = 1; i < n; i++) ` `  ``{` `    ``// Check if i and n-i doesn't` `    ``// contain k in them print i and n-i` `    ``if` `(freqCount(i.ToString(),` `                 ``(``char``)(k + 48)) == 0 &&` `        ``freqCount((n-i).ToString(),` `                  ``(``char``)(k + 48)) == 0) ` `    ``{` `      ``Console.Write(``"("` `+ i + ``", "` `+` `                    ``(n - i) + ``")"``);` `      ``flag = 1;` `      ``break``;` `    ``}` `  ``}`   `  ``// Check if flag is 0` `  ``// then print -1` `  ``if` `(flag == 0)` `    ``Console.Write(-1);` `}`   `// Driver code` `public` `static` `void` `Main(String[] args)` `{` `  ``// Given N and K` `  ``int` `N = 100;` `  ``int` `K = 0;`   `  ``// Function call` `  ``findAandB(N, K);` `}` `}`   `// This code is contributed by 29AjayKumar`

Output:

```(1, 99)

```

Time Complexity: O(N)
Auxiliary Space: O(1)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Improved By : Rajput-Ji, offbeat, 29AjayKumar

Article Tags :
Practice Tags :

1

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