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
struct Solution;
impl Solution {
fn get_no_zero_integers(n: i32) -> Vec<i32> {
let mut v: Vec<bool> = vec![true; 10000];
v[0] = false;
for i in 0..10 {
for j in 0..10 {
for k in 0..10 {
for l in 0..10 {
let x = i * 1000 + j * 100 + k * 10 + l;
if i != 0 && (j == 0 || k == 0 || l == 0) {
v[x] = false;
}
if j != 0 && (k == 0 || l == 0) {
v[x] = false;
}
if k != 0 && l == 0 {
v[x] = false;
}
}
}
}
}
for a in 1..n {
let b = n - a;
if v[a as usize] && v[b as usize] {
return vec![a, b];
}
}
vec![]
}
}
#[test]
fn test() {
let n = 2;
let res = vec![1, 1];
assert_eq!(Solution::get_no_zero_integers(n), res);
let n = 11;
let res = vec![2, 9];
assert_eq!(Solution::get_no_zero_integers(n), res);
let n = 10000;
let res = vec![1, 9999];
assert_eq!(Solution::get_no_zero_integers(n), res);
let n = 69;
let res = vec![1, 68];
assert_eq!(Solution::get_no_zero_integers(n), res);
let n = 1010;
let res = vec![11, 999];
assert_eq!(Solution::get_no_zero_integers(n), res);
let n = 4102;
let res = vec![111, 3991];
assert_eq!(Solution::get_no_zero_integers(n), res);
}