1317. Convert Integer to the Sum of Two No-Zero Integers
No-Zero integer is a positive integer that does not contain any 0 in its decimal representation.
Given an integer n, return a list of two integers a, b where:
- a and b are No-Zero integers.
- a + b = n
The test cases are generated so 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: Let a = 1 and b = 1.
Both a and b are no-zero integers, and a + b = 2 = n.
Example 2:
Input: n = 11
Output: 2,9
Explanation: Let a = 2 and b = 9.
Both a and b are no-zero integers, and a + b = 11 = n.
Note that there are other valid answers as 8, 3 that can be accepted.
Constraints:
- 2 < = n < = 10 4 2 <= n <= 10^4 2<=n<=104
From: LeetCode
Link: 1317. Convert Integer to the Sum of Two No-Zero Integers
Solution:
Ideas:
Try every a from 1 to n - 1, set b = n - a, and return the first pair containing no digit 0.
Code:
c
#include <stdlib.h>
#include <stdbool.h>
static bool isNoZero(int num) {
while (num > 0) {
if (num % 10 == 0) {
return false;
}
num /= 10;
}
return true;
}
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* getNoZeroIntegers(int n, int* returnSize) {
int* answer = malloc(2 * sizeof(int));
for (int a = 1; a < n; a++) {
int b = n - a;
if (isNoZero(a) && isNoZero(b)) {
answer[0] = a;
answer[1] = b;
*returnSize = 2;
return answer;
}
}
*returnSize = 0;
free(answer);
return NULL;
}