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 }
  • 相关阅读:
    MessageFormat理解,MessageFormat.format(Object obj)方法
    正则表达式
    数字处理类
    包装类
    遍历Map的4种方法(来自网络)
    集合类
    数组
    字符串
    语言基础
    Linux下使用openssl加解密
  • 原文地址:https://www.cnblogs.com/iiyiyi/p/4693252.html
Copyright © 2011-2022 走看看