SDUT - 3268 飞花的糖果 (Java)

飞花的糖果

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类练习。组合数问题,常规公式容易超时和溢出,这样比较简便。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值