棋盘覆盖
时间限制:
3000 ms | 内存限制:
65535 KB
难度:
3
-
描述
-
在一个2k×2k(1<=k<=100)的棋盘中恰有一方格被覆盖,如图1(k=2时),现用一缺角的2×2方格(图2为其中缺右下角的一个),去覆盖2k×2k未被覆盖过的方格,求需要类似图2方格总的个数s。如k=1时,s=1;k=2时,s=5
-
输入
-
第一行m表示有m组测试数据;
每一组测试数据的第一行有一个整数数k;
输出
- 输出所需个数s; 样例输入
-
3
-
1
-
2
-
3
样例输出
-
1
-
5
-
21
-
/* 注意寻找图中规律*/ #include<stdio.h> int main() { int m; scanf("%d",&m); while(m--) { int a[100]={0},k,len=1,jw=0,temp,i,j; a[1]=1; scanf("%d",&k); for(i=1;i<=k;i++)//保存大数 { jw=0; for(j=1;j<=len;j++) { temp=a[j]*4+jw; a[j]=temp%10; jw=temp/10; if(j==len && jw!=0) len++; } } temp=0; for(i=len;i>=1;i--)//计算结果 { temp=temp*10+a[i]; a[i]=temp/3; temp=temp%3; } while(a[len]==0) len--; for(i=len;i>=1;i--) printf("%d",a[i]); printf("\n"); } return 0; }
-
第一行m表示有m组测试数据;