# 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:**

Hey! Looking for some great resources suitable for young ones? You've come to the right place. Check out our **self-paced courses designed for students of grades I-XII. **

Start with topics like **Python, HTML, ML, and learn to make some games and apps** all with the help of our expertly designed content! So students worry no more, because **GeeksforGeeks School** is now here!

Input:N = 100, K = 0Output:1 99Explanation:

1 + 99 = 100 and none of the numbers has 0 in it.

Input:N = 123456789, K = 2Output:3456790 119999999Explanation:

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<bits/stdc++.h>` `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` |

## Javascript

`<script>` `// Javascript program for` `// the above approach` `function` `freqCount(str, k)` `{` ` ` `var` `count = 0;` ` ` `for` `(` `var` `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` `function` `findAandB(n, k)` `{` ` ` `var` `flag = 0;` ` ` ` ` `// Check every number i and (n-i)` ` ` `for` `(` `var` `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(),` ` ` `String.fromCharCode(k + 48)) == 0 &&` ` ` `freqCount((n - i).toString(),` ` ` `String.fromCharCode(k + 48)) == 0)` ` ` `{` ` ` `document.write( ` `"("` `+ i + ` `", "` ` ` `+ (n - i) + ` `")"` `);` ` ` `flag = 1;` ` ` `break` `;` ` ` `}` ` ` `}` ` ` ` ` `// Check if flag is 0` ` ` `// then print -1` ` ` `if` `(flag == 0)` ` ` `cout + -1;` `}` `// Driver Code` `// Given N and K` `var` `N = 100;` `var` `K = 0;` `// Function call` `findAandB(N, K);` `// This code is contributed by rrrtnx.` `</script>` |

**Output:**

(1, 99)

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