回过头再看发现有点没解释清楚,所以对博客进行了一些必要的补充和说明,如果还有不明白的的可以评论或私信我,我看到了会尽快答复。
解决这道题我们要想到高中数学里的排列组合,
先让我们理顺一下:
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;
}
输出
搞定完成!