package buct_三国杀;
import java.util.*;
import java.math.BigInteger;
import java.io.*;
public class Main
{
public static BigInteger C(int x, int n)
{
BigInteger ans = BigInteger.ONE;
int i, j;
for (i = n; i >= n - x + 1; i--)
{
ans = ans.multiply(BigInteger.valueOf(i));
}
for (i = x; i >= 1; i--)
{
ans = ans.divide(BigInteger.valueOf(i));
}
return ans;
}
public static void main(String[] args)
{
BigInteger ans;
Scanner cin = new Scanner(System.in);
int t, n, x, k, u, i;
t = cin.nextInt();
for (u = 1; u <= t; u++)
{
n = cin.nextInt();
x = cin.nextInt();
k = n / x;
ans = BigInteger.ONE;
for (i = 0; i < k; i++)
{
ans = ans.multiply(C(x, n - x * i));
}
for (i = 1; i <= k; i++)
{
ans = ans.divide(BigInteger.valueOf(i));
}
System.out.println(ans);
}
}
}
本文介绍了一个使用Java实现的组合计算方法,该方法能够处理大数据集上的组合问题,通过BigInteger确保了数值不会溢出。文章详细展示了如何计算特定条件下元素的组合数,并通过实例解释了算法的工作原理。
5458

被折叠的 条评论
为什么被折叠?



