[NEUQ-OJ] 1012 SZ斐波拉契数列

一道水题,让我看清基础我的基础是多么薄弱. 递归,数组清零,数组名/变量名重复层出不穷...路漫漫啊..........

http://ncc.neuq.edu.cn/oj/problem.php?id=1012

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

1012: SZ斐波拉契数列

时间限制: 1 Sec  内存限制: 2 MB

提交: 62  解决: 35

[提交][状态][讨论版]

题目描述

你应该很熟悉斐波那契数列,不是吗?现在谷学长不知在哪里搞了个山寨版斐波拉契数列,如下公式:

F(n)=

{

   a,                                   n=1

   b,                                   n=2

   F(n-1)+F(n-2),               n>2并且n是奇数

   F(n-1)+F(n-2)+F(n-3),   n>2并且n是偶数

}

这里a和b是定值,现给出a,b和n,你的任务是计算F(n)。

输入

第一行有一个正整数T(T<=10),表示测试实例的个数。每个测试实例包括三个正整数a,b和n(a<=10,b<=10,n<=30)。

输出

对于每个测试实例,输出一行包含一个正整数F(n)。

样例输入

2
1 2 3
1 3 6

样例输出

3
24

提示

来源

zxp

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

AC代码:

#include <stdio.h>
int a,b,n;
int fib(int n)
{
if(n==1) return a;
else if(n==2) return b;
else if(n%2) return fib(n-1)+fib(n-2);
else return fib(n-1)+fib(n-2)+fib(n-3);
} int main()
{
unsigned t,i;
int max[30]={0};
scanf("%d",&t);
for(i=0;i<t;i++)
{
scanf("%d%d%d",&a,&b,&n);
max[i]=fib(n);
}
for(i=0;i<t;i++)
{
printf("%d\n",max[i]);
} }

2013.10.23

上一篇:PAT1003


下一篇:JSP编译为Java类