我当时就是想的:当只有两个数的时候所有可能情况是k个数里面随机选出两个然后排列,每次的两个数排列只有两种情况,只有3个数的时候就是K个数里面随机选3个排列,这3个数排列只有两种情况所以我试着以此类推写下了如下代码
import java.util.Scanner;
public class ALGO9 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//注意,这里面使用long类型是因为你面有几组数据运算结果超出int运算范围,如果使用int会导致结果出错
long n = sc.nextLong();
long ans = 0;
for (int i = 2; i <= n; i++) {
ans += cal(n,i);
}
System.out.println(ans*2);
}
public static long cal(long n,long t) {
return stage(n)/(stage(t)*stage(n-t));
}
public static long stage(long n) {
if(n==1||n==0) return 1;
else return n*stage(n-1);
}
}
具体的数学证明我还不清楚
先挖个坑吧