加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

UVa:10359 Tiling

发布时间:2020-12-14 03:54:57 所属栏目:大数据 来源:网络整理
导读:可以推出f[i]=f[i-1]+2*f[i-2] 需要用到大数加法。 #include iostream#include cstdlib#include cstdio#include cstring#include algorithm#define MAXN 105using namespace std;void BigAdd(char a[],char b[],char back[]){ int p=0,up=0; char c[MAXN]= {

可以推出f[i]=f[i-1]+2*f[i-2]

需要用到大数加法。

#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define MAXN 105
using namespace std;
void BigAdd(char a[],char b[],char back[])
{
    int p=0,up=0;
    char c[MAXN]= {0};
    for(int i=strlen(a)-1,j=strlen(b)-1; i>=0||j>=0; --i,--j)
    {
        int x,y,z;
        if(i<0) x=0;
        else x=a[i]-'0';
        if(j<0) y=0;
        else y=b[j]-'0';
        z=x+y+up;
        if(z>9) up=1;
        else up=0;
        c[p++]=z%10+'0';
    }
    if(up) c[p++]='1';
    c[p]=0;
    int q=0;
    for(int i=p-1; i>=0; --i)
        back[q++]=c[i];
    back[q]=0;
}
char f[255][MAXN];
int main()
{
    strcpy(f[0],"1");
    strcpy(f[1],"1");
    for(int i=2; i<=250; ++i)
    {
        char tmp[MAXN];
        BigAdd(f[i-2],f[i-2],tmp);
        BigAdd(f[i-1],tmp,f[i]);
    }
    int n;
    while(scanf("%d",&n)!=EOF)
        printf("%sn",f[n]);
    return 0;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读