#include"stdio.h" int main() { __int64 a[51]={0,3,6,6}; int n; for(int i=4;i<=50;i++) { a[i]=a[i-1]+a[i-2]*2; } while(~scanf("%d",&n)) { printf("%I64d\n",a[n]); } return 0; }
简单的一道递推题
递推题一般都是和前面数据相关联的,再加上分析,基本上可以得出递推式,如果可能的话,最好将递推式转换成公式,可以加快运行时间。
递推有时候也会将大数的一类高精度结合起来,要注意什么时候要用__int64 什么时候用大数。。。
HDU 2047
#include"stdio.h" int main() { __int64 a[41]={0,3,8}; int n; for(int i=3;i<=40;i++) { a[i]=2*(a[i-1]+a[i-2]); } while(~scanf("%d",&n)) { printf("%I64d\n",a[n]); } return 0; }