Open carloscn opened 1 year ago
区分两个概念,一个是非零整数,一个是无零整数。无零整数就是不包含0的整数,例如100, 1010, 1098 都是含0整数。因此需要对生成的数字进行判断。我们可以取随机数,生成之后判定,不行的话就重新生成。
use rand::Rng;
pub fn get_no_zero_integers(n: i32) -> Vec<i32>
{
let mut ret:Vec<i32> = vec![];
if n < 2 {
return ret;
}
let mut rng_ctx = rand::thread_rng();
let mut rand = 1;
let mut left = n - rand;
while rand.to_string().contains("0") || left.to_string().contains("0") {
rand = rng_ctx.gen_range(2..n-1);
left = n - rand;
}
ret.push(rand);
ret.push(left);
return ret;
}
问题描述
「无零整数」是十进制表示中 不含任何 0 的正整数。
给你一个整数 n,请你返回一个 由两个整数组成的列表 [A, B],满足:
A 和 B 都是无零整数 A + B = n 题目数据保证至少有一个有效的解决方案。
如果存在多个有效解决方案,你可以返回其中任意一个。
示例 1:
输入:n = 2 输出:[1,1] 解释:A = 1, B = 1. A + B = n 并且 A 和 B 的十进制表示形式都不包含任何 0 。 示例 2:
输入:n = 11 输出:[2,9] 示例 3:
输入:n = 10000 输出:[1,9999] 示例 4:
输入:n = 69 输出:[1,68]
示例 5:
输入:n = 1010 输出:[11,999]
提示:
2 <= n <= 10^4