从1到100,一个数,两个数,三个数或多个数一组,取任意组合,对组合里的数进行求和,求有多少组和为100的组合Java
时间: 2023-10-01 16:05:36 浏览: 62
以下是一个 Java 代码示例,用于计算 1 到 100 之间的数,有多少组数可以相加得到 100:
```java
public class SumTo100 {
public static void main(String[] args) {
int target = 100;
int count = 0;
// 两个数的组合
for (int i = 1; i <= target / 2; i++) {
for (int j = i + 1; j <= target - i; j++) {
if (i + j == target) {
count++;
}
}
}
// 三个数的组合
for (int i = 1; i <= target / 3; i++) {
for (int j = i + 1; j <= target - i; j++) {
for (int k = j + 1; k <= target - i - j; k++) {
if (i + j + k == target) {
count++;
}
}
}
}
// 多个数的组合
for (int i = 1; i <= target / 2; i++) {
count += countCombinations(target - i, i);
}
System.out.println("总共有 " + count + " 组和为 " + target + " 的组合");
}
// 计算 n 个数中选取 k 个数的组合数
private static int countCombinations(int n, int k) {
int result = 1;
for (int i = 1; i <= k; i++) {
result = result * (n - i + 1) / i;
}
return result;
}
}
```
该代码首先遍历所有的两个数组合,然后遍历所有的三个数组合。最后,它使用组合数公式计算所有大小为多个数的组合的数量,其中和为 100。该代码使用了一个名为 `countCombinations` 的方法来计算组合数。