zoukankan      html  css  js  c++  java
  • 【递推+高精度】POJ2506-Tiling

    思路别人那里讲的很清楚了,我就不阐述了。链接

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cmath>
     4 #include<cstring>
     5 using namespace std;
     6 const int MAXN=250+5;
     7 int n;
     8 struct Big
     9 {
    10     int num[MAXN],len;
    11 };
    12 Big ans[MAXN];
    13 
    14 void dou(Big &x)
    15 {
    16     for (int i=0;i<x.len;i++)
    17     {
    18         x.num[i]=x.num[i]*2;
    19         if (i>0)
    20         {
    21             x.num[i]+=x.num[i-1]/10;
    22             x.num[i-1]=x.num[i-1]%10;
    23         }
    24     }
    25     if (x.num[x.len-1]>9)
    26     {
    27         x.num[x.len]=x.num[x.len-1]/10;
    28         x.num[x.len-1]=x.num[x.len-1]%10;
    29         x.len++;
    30     }
    31 }
    32 
    33 void plu(Big x,Big y,Big &z)
    34 {
    35     memset(z.num,0,sizeof(z.num));
    36     int length=max(x.len,y.len);
    37     for (int i=0;i<length;i++)
    38     {
    39         z.num[i]=z.num[i]+x.num[i]+y.num[i];
    40         z.num[i+1]=z.num[i]/10;
    41         z.num[i]=z.num[i]%10;
    42     }
    43     if (z.num[length]!=0) z.len=length+1;
    44         else z.len=length;
    45 }
    46 
    47 int main()
    48 {
    49     while (scanf("%d",&n)!=EOF)
    50     {
    51         ans[0].num[0]=1;ans[0].len=1;
    52         ans[1].num[0]=1;ans[1].len=1;
    53         for (int i=2;i<=n;i++)
    54         {
    55             dou(ans[i-2]);
    56             plu(ans[i-2],ans[i-1],ans[i]);
    57         }
    58         for (int i=ans[n].len-1;i>=0;i--) cout<<ans[n].num[i];cout<<endl;
    59     }
    60     return 0;
    61 }
  • 相关阅读:
    Java 对象的封装,继承,抽象,接口写法
    python 3.7 方向键乱码
    yocto doc
    为什么要使用yocto
    ltp-ddt的makefile结构
    Git 常用命令列表
    Makefile依赖关系中的竖线“|”
    makefile 双冒号规则
    ltp makefile 解析
    makefile 变量展开
  • 原文地址:https://www.cnblogs.com/iiyiyi/p/4693252.html
Copyright © 2011-2022 走看看