- 问题描述
- 样例输入
一个满足题目要求的输入范例。
3 10
- 样例输出
与上面的样例输入对应的输出。
- 数据规模和约定
输入数据中每一个数的范围。
例:结果在int表示时不会溢出。
- 主要思路
本题是一个简单的数学组合排列问题,主要采用递归的方法求系数值,根据题目给出 的分段函数公式我们可以将该问题分成两部分来解决。
- 代码如下:
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int k = sc.nextInt();
int n = sc.nextInt();
int num = getValue(k,n)+getValue(k-1,n);
System.out.println(num);
}
private static int getValue(int k, int n) {
// 递归求系数值
if(k==0||k==n){
return 1;
}
int an = n-1;
for (int i = n-2; i >= n-k; i--) {
an *= i;
}
int sn = 1;
for (int j = 1; j <= k; j++) {
sn *= j;
}
return an/sn;
}
}