java实现 算法训练 Glenbow Museum (蓝桥杯算法训练)



//ALGO-165    Glenbow Museum    数学

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		int i=1;
		int l;
		long count;
		while((l=in.nextInt())!=0) {
			if(l<4||l%2!=0) {//l不能为奇数,l序列中不能连o和首尾不能都为o
				count=0;
			}else if(l==4) {
				count=1;
			}else {
				int r=(l+4)/2;//l=r+o,r=o+4
				int o=(l-4)/2;
				//向r中插入o的问题
				count=Combination(r,o)+Combination(r-1,o-1);//第一个为r和第一个为o的情况
			}
			System.out.printf("Case %d: %d\n",i,count);
			i++;
		}
	}

	private static long Combination(int n, int m) {//求C(n,m)
		long x=1,y=1;
		if(m>n/2) {
			m=n-m;
		}
		for(int i=1;i<=m;i++) {
			x*=(n+1-i);
			y*=i;
		}
		return x/y;
	}

}


  

ALGO-165 Glenbow Museum 数学

猜你喜欢

转载自blog.csdn.net/zxt1484675627/article/details/88390329