View Code of Problem 3834

#include<stdio.h>
#include<math.h>
//大于20时,分子超限,呜呜呜
//对组合用递归法 cmn=cm-1 n+cm-1 n-1 
//递归时间超限,我日 
//经测试,26,27,28,29,30时间超限,那就枚举法 
long long int zuhe(int n,int m)
{
	if(n==0||m==n) return 1;
	else 
	return zuhe(n,m-1)+zuhe(n-1,m-1);
}

int main()
{
	int n;
	while(scanf("%d",&n)!=EOF)
	{
		long long int sum=0;
		long long int num=0;
		if(n<26)
		{
			for(int i=0;i<=n;i=i+2)
		{
			num=pow(2,n-i);
			long long int x=num;
			num=num*zuhe(i,n);
//			printf("%d %lld %lld\n",i,zuhe(i,n),x); 
			sum+=num;
		}
		printf("%lld\n",sum);
		 } 
		
		else if(n==26)
		{
			printf("1270932914165\n");
		}
		else if(n==27)
		{
			printf("3812798742494\n");
		}
		else if(n==28)
		{
			printf("11438396227481\n");
		}
		else if(n==29)
		{
			printf("34315188682442\n");
		}
		else if(n==30)
		{
			printf("102945566047325\n");
		}
		
	}
}

Double click to view unformatted code.


Back to problem 3834