满足以下条件的正整数:8、2、6、9中的每个数字至少在这个整数中出现一次,而且没有除了这四个之外的其他数字。问1和N(含N)之间有多少个满足这一条件的整数。输入一个整数N。输出符合条件的个数。C++最快代码实现
时间: 2024-06-04 15:13:49 浏览: 88
判断输入的任何一个正整数n,是否等于某个连续正整数序列之和。
3星 · 编辑精心推荐
这是一个比较简单的组合问题,我们可以枚举数字中包含的数字个数,然后计算出这些数字的排列组合数,最后累加即可。
具体来说,假设数字中包含 $k$ 个数字,那么这 $k$ 个数字可以任意排列,而且每个数字可以在数字中出现 $1$ 次或 $2$ 次,因此有 $k!/(a_1!a_2!\cdots a_k!)$ 种排列方式,其中 $a_i$ 表示数字 $i$ 出现的次数。对于每个 $a_i$,如果 $a_i=1$,那么对答案的贡献为 $1$,如果 $a_i=2$,那么对答案的贡献为 $2$。因此,我们可以枚举数字中包含的数字个数,然后对每个数字计算贡献,最后累加即可。
代码实现如下:
阅读全文