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

    9273:PKU2506Tiling

    来源:http://noi.openjudge.cn/ch0202/9273/

    总时间限制: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

    分析:
    f[n] = f[n-1] + f[n-2]*2 ;

    使用这个递推公式,再加上高精度计算即可。

    综合了高精度、递推,而且高精度的运用比较熟悉、巧妙。

    代码来源:http://blog.csdn.net/c20180630/article/details/52329721

     1     #include<iostream>  
     2     #include<cstdio>  
     3     using namespace std;  
     4     int a[301][501];  //a[i]用来存储一个大整数,其中a[i][0]存储长度,真实数据倒序存储。
     5     int max(int x,int y){return x>y?x:y;}  
     6     int main()  
     7     {  
     8         a[1][0]=1;  
     9         a[1][1]=1;  
    10         a[2][0]=1;  
    11         a[2][1]=3;  
    12         for(int i=3;i<=300;i++){  
    13             for(int j=1;j<=max(a[i-2][0],a[i-1][0]);j++)  
    14                 a[i][j]=a[i-1][j]+a[i-2][j]*2;  //高精度加法(按位加的操作)
    15             a[i][0]=max(a[i-2][0],a[i-1][0]);  
    16             for(int j=1;j<=a[i][0];j++){         //高精度加法的进位
    17                 a[i][j+1]+=a[i][j]/10;  
    18                 a[i][j]%=10;  
    19             }  
    20             while(a[i][a[i][0]+1]){              //更新高精度加法结果的位数
    21                 a[i][0]++;  
    22                 a[i][a[i][0]+1]+=a[i][a[i][0]]/10;  
    23             }  
    24         }  
    25         int n;  
    26         while(cin>>n){  
    27             if(n==0)  
    28                 cout<<1<<endl;  
    29             else{  
    30                 for(int i=a[n][0];i>=1;i--)  
    31                     cout<<a[n][i];  
    32                 cout<<endl;  
    33             }  
    34         }  
    35     }
  • 相关阅读:
    ORACLE 使用笔记
    Python资源大全,让你相见恨晚的Python库
    基于python的k-s值计算
    sklearn聚类模型:基于密度的DBSCAN;基于混合高斯模型的GMM
    skearn学习路径
    透彻形象理解核函数
    LDA降维与PCA降维对比
    sklearn 岭回归
    GBDT、XGBOOST、LightGBM对比学习及调参
    sklearn,交叉验证中的分层抽样
  • 原文地址:https://www.cnblogs.com/huashanqingzhu/p/6535989.html
Copyright © 2011-2022 走看看