hdu 2068

这道题我甚是无语,我的起始代码怎么提交都是wa后来没办法,改了一下某个无关紧要的计数变量的数据类型,它竟然AC了惊恐
看来以后要继续努力奋斗啊正确代码如下:
 
#include
__int64 pz(int a,int b)
{
	__int64 t1=1,t2=1,i;
	for(i=a;i>=a-b+1;i--)
	t1*=i;
	for(i=1;i<=b;i++)
	t2*=i;
	return t1/t2;
}
int main()
{
	int n,i;
	__int64 a[30]={0,0,1};
	for(i=3;i<30;i++)
	{
		a[i]=(i-1)*(a[i-1]+a[i-2]);
	}
	while(~scanf("%d",&n),n)
	{
		__int64 sum=0;
		for(i=2;i<=n/2;i++)
		{
			sum+=a[i]*pz(n,i);
		}
		if(n==1||n==2)
		printf("1\n");
		else
		printf("%I64d\n",sum+1);
	}
	return 0;
}
 

你可能感兴趣的:(hdu 2068)