Formatted question description: https://leetcode.ca/all/1317.html

# 1317. Convert Integer to the Sum of Two No-Zero Integers (Easy)

Given an integer n. No-Zero integer is a positive integer which doesn't contain any 0 in its decimal representation.

Return a list of two integers [A, B] where:

• A and B are No-Zero integers.
• A + B = n

It's guarateed that there is at least one valid solution. If there are many valid solutions you can return any of them.

Example 1:

Input: n = 2
Output: [1,1]
Explanation: A = 1, B = 1. A + B = n and both A and B don't contain any 0 in their decimal representation.


Example 2:

Input: n = 11
Output: [2,9]


Example 3:

Input: n = 10000
Output: [1,9999]


Example 4:

Input: n = 69
Output: [1,68]


Example 5:

Input: n = 1010
Output: [11,999]


Constraints:

• 2 <= n <= 10^4

Related Topics:
Math

## Solution 1.

// OJ: https://leetcode.com/problems/convert-integer-to-the-sum-of-two-no-zero-integers/

// Time: O(NlogN)
// Space: O(1)
class Solution {
bool hasZero(int n) {
for (; n; n /= 10) {
if (n % 10 == 0) return true;
}
return false;
}
public:
vector<int> getNoZeroIntegers(int n) {
int a = 1;
for (; hasZero(a) || hasZero(n - a); ++a);
return { a, n - a };
}
};


Java

class Solution {
public int[] getNoZeroIntegers(int n) {
int[] nums = new int;
int upper = n / 2;
for (int i = 1; i <= upper; i++) {
int num2 = n - i;
if (noZero(i) && noZero(num2)) {
nums = i;
nums = num2;
break;
}
}
return nums;
}

public boolean noZero(int num) {
if (num <= 0)
return false;
while (num > 0) {
int remainder = num % 10;
if (remainder == 0)
return false;
num /= 10;
}
return true;
}
}