zoukankan      html  css  js  c++  java
  • 9273:PKU2506Tiling

    总时间限制: 
    2000ms
     
    单个测试点时间限制: 
    1000ms
     
    内存限制: 
    131072kB
    描述

    对于一个2行N列的走道。现在用1*2,2*2的砖去铺满。问有多少种不同的方式。

    下图是一个2行17列的走道的某种铺法。



    输入

    整个测试有多组数据,请做到文件底结束。每行给出一个数字N,0 <= n <= 250

    输出

    如题

    样例输入
    2
    8
    12
    100
    200
    样例输出
    3
    171
    2731
    845100400152152934331135470251
    1071292029505993517027974728227441735014801995855195223534251
    #include<iostream>
    #include<iomanip>
    #include<cstring>
    #include<cmath>
    #include<cstdio>
    using namespace std;
    int a[301][501];
    int my_max(int x,int y)
    {
    return x>y?x:y;
    }
    int main()
    {
    memset(a,0,sizeof(a));
    a[1][0]=1;
    a[1][1]=1;
    a[2][0]=1;
    a[2][1]=3;
    for(int i=3;i<=300;i++)
    {
    for(int j=1;j<=my_max(a[i-2][0],a[i-1][0]);j++)
    {
    a[i][j]=a[i-1][j]+a[i-2][j]*2;
    }
    a[i][0]=my_max(a[i-2][0],a[i-1][0]);
    for(int j=1;j<=a[i][0];j++)
    {
    a[i][j+1]+=a[i][j]/10;
    a[i][j]%=10;
    }
    while(a[i][a[i][0]+1])
    {
    a[i][0]++;
    a[i][a[i][0]+1]+=a[i][a[i][0]]/10;
    a[i][a[i][0]]%10;
    }
    }
    int n;
    while(cin>>n)
    {
    if(n==0)cout<<1<<endl;
    else
    {
    for(int i=a[n][0];i>=1;i--)
    cout<<a[n][i];
    cout<<endl;
    }
    }
    return 0;
    }
  • 相关阅读:
    NuGet包介绍
    修改逻辑文件名
    检查扫描文件系统
    C# Newtonsoft.Json不序列字段
    HierarchyId通过父节点创建一个新的子节点
    常用SQL语句
    redis脚本
    asp.net 的一个简单进度条功能
    .Net C#向远程服务器Api上传文件
    使用IKVM在C#中调用JAVA程序
  • 原文地址:https://www.cnblogs.com/crazily/p/9491483.html
Copyright © 2011-2022 走看看