1317. Convert Integer to the Sum of Two No-Zero Integers

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

Rust Solution

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);
}

Having problems with this solution? Click here to submit an issue on github.