NYOJ 45 棋盘覆盖
发布时间:2020-12-14 03:06:51 所属栏目:大数据 来源:网络整理
导读:棋盘覆盖 时间限制: 3000 ?ms ?|? 内存限制: 65535 ?KB 难度: 3 描述 在一个2 k ×2 k (1=k=100)的棋盘中恰有一方格被覆盖,如图1(k=2时),现用一缺角的2×2方格(图2为其中缺右下角的一个),去覆盖2 k ×2 k 未被覆盖过的方格,求需要类似图2方格总
棋盘覆盖
时间限制:
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 ? ? ?
拆分的大数相乘问题,注意到求解的是2^2k次方==4^k,利用循环使大数不断乘4,记录每步的数值。代码如下:
#include<iostream> #include<string.h> using namespace std; int main() { int n; cin>>n; while(n--) { int a[100]; memset(a,sizeof(a)); int size; cin>>size; a[0]=1; if(size==1) cout<<a[0]<<endl; int i,j,k; for(i=2;i<=size;++i) { for(j=0;j<100;++j) a[j]=4*a[j]; a[0]++; for(j=0;j<99;++j) { a[j+1]+=a[j]/10; a[j]=a[j]%10; } } for(i=99;i>=0;--i) if(a[i]) break; for(j=i;j>=0;--j) cout<<a[j]; cout<<endl; } return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |