XYNUOJ 棋盘覆盖

棋盘覆盖

时间限制: 3 Sec  内存限制: 64 MB
[ 提交][ 状态][ 讨论版]

题目描述

在一个2k×2k(1<=k<=100)的棋盘中恰有一方格被覆盖,如图1(k=2时),现用一缺角的2×2方格(图2为其中缺右下角的一个),去覆盖2k×2k未被覆盖过的方格,求需要类似图2方格总的个数s。如k=1时,s=1;k=2时,s=5

                                                                                    

图1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                                              图2                     

 

 

 

 

 

输入

第一行m表示有m组测试数据; 每一组测试数据的第一行有一个整数数k;

输出

输出所需个数s;

样例输入

3123

样例输出

1521

问题分析:求出总的方格个数,对3相除的结果即为所求

代码如下:

# include
int main()
{
	int n;
	int t;
	scanf("%d",&t);
	while(t--)
{
	scanf("%d",&n);
int a[65]={0};
a[0]=1;	          
	for(int i=1;i<=n;i++)           //求方格的个数 
	{		
		int k=0;           
	for(int j=0;j<65;j++)	
		{
			int  r=a[j]*4+k;
			a[j]= r%10;
			k=r/10;
		}
		
	}
	int i;
	for( i=64;i>=0;i--) 
	{
		if(a[i]!=0)
		break;	
	}
	int k=0;
	for(int j=i;j>=0;j--)          //对 3  相除 
	{
	int r=a[j]+k*10;
		a[j]=r/3;
		k=r%3;
	}
	
	for(i;i>=0;i--)
	if(a[i]!=0)
	break;
	
	for(i;i>=0;i--)      //输出结果 
	printf("%d",a[i]);
	printf("\n");	
}
	return 0;
}

你可能感兴趣的:(数论)