南邮NOJ Counter Attack

Counter Attack

时间限制(普通/Java) : 1000 MS/ 2000 MS          运行内存限制 : 65536 KByte
总提交 : 440            测试通过 : 74 

题目描述

(题名来源:2013年校队出战南京邀请赛曾用队名)

逆袭(Counter Attack)什么的,是必须的,不逆袭,不算活过。DS为逆袭,求教神预言家Master Yu。预言家一听是DS想逆袭,心中一叹曰“喜闻乐见”,随即铺开一列塔罗牌,对DS说:你可以从这列塔罗牌中取走任意多个,但是,不能取走相邻的牌,因为相邻的牌是相刑的,会带来一生孤独运。预言家说完,抬手转身出门而去,远处传来上帝的声音:“若你能找出所有的可行取法,百日内必可被逆推!”
请问,到底有多少种可行的取法呢?



输入

第一行包含一个正整数T (1≤T≤10),表示有T组测试用例。
每组用例包含一行,仅一个正整数n (1≤n≤50),表示这列塔罗牌有n张。

输出

每组用例输出一行,仅包含一个整数,即满足规则的可行取法数。

样例输入

1
5

样例输出

13

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<cstdio>
using namespace std;
int T;
const int N=100;
int main()
{
    scanf("%d",&T);
    while(T--)
    {
        int n;
        int64_t a[N];
        scanf("%d",&n);
        a[1]=2;
        a[2]=3;
        a[3]=5;
        for(int i=4;i<=50;i++)
        {
            a[i]=a[i-2]+a[i-1];
        }
        printf("%I64d
",a[n]);
    }
    return 0;
}

在累加的过程中a[i]的值可能会很大,比如说当牌数等于50的时候,要注意把数组数据类型声明为int 64位的,或者long long int。

版权声明:本文为博主原创文章,未经博主允许不得转载。

原文地址:https://www.cnblogs.com/Tobyuyu/p/4965710.html