回过头再看发现有点没解释清楚,所以对博客进行了一些必要的补充和说明,如果还有不明白的的可以评论或私信我,我看到了会尽快答复。
解决这道题我们要想到高中数学里的排列组合,
先让我们理顺一下:
1.当组成一位数时:
1,3,5,7四种情况
2.当组成两位数时:
十位数上不能是0,个位数上由1,3,5,7组成
则公式是

解释一下啊:
- 为什么要乘以4呢? 因为组成的奇数它个位上有四种情况,可以为1、3、5、7
- 第一个A,是因为在个位数确定的情况下,十位上的数就从剩下的7个数字选一个
- 第二个A,是因为组成数字的第一位不能是0,所以要减去十位上是0的情况,那么十位上是0的情况下也就是1种
当组成三位数时:
公式为

解释:计算百位数为0的情况,也就是在个位确定了数字时,百位数为0,那十位上的数就从剩下的6个数字中选一个。
…
以此类推,当组成i位数时

其中

由此生成代码:
public static void main(String[] args) {
int sum = 4;
for (int i = 2; i <= 8; i++) {
sum += (n(7) / n(8 - i) - n(6) / n(8 - i)) * 4;
}
System.out.println("0—7所能组成的奇数个数为:" + sum);
}
//写一个生成n!的函数
public static double n(int a) {
double n = 1;
for (int i = 1; i <= a; i++) {
n *= i;
}
return n;
}
输出

搞定完成!
本文通过高中数学的排列组合原理,详细解析如何计算由0到7数字组成的奇数个数,涵盖一位数至八位数的计算过程,并提供Java代码实现。
5万+





