
思路:高精度来求
代码:
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
int n,k;
while(scan.hasNext()){//求最小值min
n=scan.nextInt();
k=scan.nextInt();
if(n-k<=k) k=n-k;
BigInteger ans=new BigInteger("1");
BigInteger max=new BigInteger("1000000000000000000");
BigInteger tmp=new BigInteger("1");
int m=n;
for (int i=1;i<=k;i++){
tmp=BigInteger.valueOf(i);
ans=ans.multiply(BigInteger.valueOf(m));
ans=ans.divide(tmp);
if (ans.compareTo(max)>=0)
break;
m--;
}
if (ans.compareTo(max)>=0) System.out.println(max);
else System.out.println(ans);
}
}
}
该代码段展示了一个用Java编写的程序,它读取两个整数n和k,然后计算并输出在n个不同整数中选择k个最大值的乘积的最小可能值。为了避免大整数溢出,程序使用了`BigInteger`类。如果计算结果超过预设的最大值,程序将输出最大值。这个程序涉及到了数值计算和错误处理策略。
1089

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



