首页 > 其他 > 详细

递推 HDU 1143

时间:2016-12-30 09:14:39      阅读:173      评论:0      收藏:0      [点我收藏+]

n%2==1

0

n%2==0

右边和左边没影响 右边的 * 左边的

z[n]=3*z[n-2]+2*z[n-4]+...2*z[0];

z[n-2]=3*z[n-4]+2*z[n-6]+...2*z[0];

z[n]=4*z[n-2]-z[n-4];

z[0]=1;

z[2]=3

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<math.h>

using namespace std;

#define MAXN 105
long long  z[45];

int main()
{
    int n;
    z[0]=1;
    z[1]=0;
    z[2]=3;
    for(int i=3;i<=30;i++)
    {
        if(i%2==0)
            z[i]=4*z[i-2]-z[i-4];
        else
            z[i]=0;
    }

    while(scanf("%d",&n)!=EOF)
    {
        if(n==-1)
            break;
        printf("%lld\n",z[n]);
    }
    return 0;
}

 

递推 HDU 1143

原文:http://www.cnblogs.com/cherryMJY/p/6235563.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!