hdoj2502

水水更健康,,位运算~

#include<stdio.h>
#include<stdlib.h>
int a[24];
__int64 result[25];
int main()
{
	int i,t;
	a[0]=1;
	a[1]=2;
	result[1]=1;
	result[2]=3;
	for(i=2;i<=23;i++)
		a[i]=a[i-1]*2;
	for(i=3;i<=20;i++)
	{
		int j;
		__int64 sum=0;
		for(j=a[i-1];j<=a[i]-1;j++)
		{
			for(int k=1;k<=i;k++)
			{
				if(j&a[k-1])
					sum++;
			}
		}
		result[i]=sum;
	}
	scanf("%d",&t);
	while(t--)
	{
		int n;
		scanf("%d",&n);
		printf("%I64d\n",result[n]);
	}
//system("pause");
return 0;
}

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>