NYOJ 45-棋盤覆蓋:大數問題
阿新 • • 發佈:2018-12-31
棋盤覆蓋
時間限制: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;
- 樣例輸入
-
3123
- 樣例輸出
-
1521
- 第一行m表示有m組測試資料;
#include<stdio.h> int main() { int n; scanf("%d" , &n); while(n--) { int m , i; int top = 1; int flag; scanf("%d" , &m); int num[70] ={1}; while(m--) { for(i = top - 1 ; i >= 0 ; i--) { flag = num[i] * 4; num[i] = flag % 10; num[i+1] += flag / 10; if(num[i + 1] >= 10) { num[i + 2] += 1; num[i + 1] -= 10; } } if(num[top] != 0) top++; } num[0] --; int t = top; while(t--) { flag = num[t] % 3; num[t] /=3; num[t - 1] = flag * 10 + num[t - 1]; } if(num[top - 1] == 0) top--; while(top--) { printf("%d" , num[top]); } printf("\n"); } return 0; }