飞花的糖果
Time Limit: 1000 ms
Memory Limit: 65536 KiB
Problem Description
N个的两两不相同糖果,他想要拿出例如,飞花壕有3块送给他心仪的程序媛,他有四种选择,分别是①、②、③, ①、②、④, ①、③、④, ②、③、④ 这四种选择。
多组输入。对于每组输入,有两个整数M(M <= 10),分表代表有M个送给他心仪的程序媛。
输出为一个整数,代表飞花壕可以做出的选择的方案数。
Sample Input
4 3 5 2
Sample Output
4 10
Code
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNextLine()) {
int m = sc.nextInt();
int n = sc.nextInt();
Combine c = new Combine(m, n);
System.out.println(c.C());
}
sc.close();
}
}
class Combine {
int m;
int n;
Combine(int m, int n) {
this.m = m;
this.n = n;
}
public long C() {
long sum = 1;
for (int i = 1; i <= n; i++) {
sum = (sum * (m - n + i)) / i;
}
return sum;
}
}
反思:
Java类练习。组合数问题,常规公式容易超时和溢出,这样比较简便。