NYOJ 45 棋盘覆盖 (大数问题)

来源:互联网 发布:淘宝购物优惠微信群 编辑:程序博客网 时间:2024/05/21 12:44

题目:NYOJ 45 棋盘覆盖

其实这道题就是大数问题
思路:利用数组模拟笔算,求出棋盘的面积(大数),用得出的面积除以3,其实不用减1就可以

#include <stdio.h>#include <string.h>#include <stdlib.h>#define N 200int main(){    int t;    int a[N];    scanf("%d",&t);    while(t--)    {        memset(a,0,sizeof(a));        a[0]=1;        int k,i,j,r,s;        scanf("%d",&k);        for(i=1;i<=2*k;i++)      //计算面积=2^(2k)             for(j=0,r=0;j<=N;j++)            {                s=a[j]*2+r;                a[j]=s%10;                r=s/10;            }        for(i=N;!a[i];i--);   //去除高位多余的0         r=0;        for(j=i;j>=0;j--)    //面积除以3         {            s=a[j]+r*10;            a[j]=s/3;            r=s%3;        }        for(;!a[i];i--);   //去除高位多余的0         for(;i>=0;i--)            printf("%d",a[i]);        printf("\n");    }    return 0;}
原创粉丝点击