首页 > 代码库 > NYOJ 45 棋盘覆盖
NYOJ 45 棋盘覆盖
以为是分治法那个经典的样例。一看题才知道是大数
-
描写叙述
-
在一个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 <iostream> #include <cstring> using namespace std; int main() { int n,m,i,j,k,t,ans[101][61]; memset(ans,0,sizeof(ans)); ans[1][0]=4; for(i=2;i<101;i++) { k=0; for(j=0;j<61;j++) { t=ans[i-1][j]*4+k; ans[i][j]=t%10; k=t/10; } } for(i=1;i<101;i++) { j=60; while(0==ans[i][j]) j--; k=0; for(;j>=0;j--) { t=ans[i][j]+k*10; ans[i][j]=t/3; k=t%3; } } cin>>n; while(n--) { cin>>m; j=60; while(0==ans[m][j]) j--; while(j>=0) cout<<ans[m][j--]; cout<<endl; } return 0; }
NYOJ 45 棋盘覆盖
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。