hdu3485(递推)

 

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3485

分析: a[i]表示长度为i,第i位为0的,符合情况的个数。

          b[i]表示长度为i,第i位为1的,符合情况的个数。

          c[i]表示符合情况的答案。

#include <cstdio>

#include <cstring>

#include <cmath>

#include <iostream>

#include <algorithm>

#include <queue>

#include <cstdlib>

#include <vector>

#include <set>

#include <map>

#define LL long long

#define mod 1000000007

#define inf 0x3f3f3f3f

#define N 50010

using namespace std;

int a[10010],b[10010],c[10010];

void init()

{

    c[1]=2;c[2]=4;b[1]=1;b[2]=2;

    for(int i=3;i<=10000;i++)

    {

        a[i]=c[i-1];

        b[i]=(c[i-1]-b[i-2]+9997)%9997;

        c[i]=(a[i]+b[i])%9997;

    }

}

int main()

{

    int n;

    init();

    while(scanf("%d",&n)>0)

    {

        if(n==-1)break;

        printf("%d\n",c[n]);

    }

}
View Code

 

你可能感兴趣的:(HDU)