南华大学ACM个人连续第一场 E.Function

Problem E: Function

Time Limit: 1 Sec   Memory Limit: 32 MB
Submit: 20   Solved: 16
[ Submit][ Status][ Web Board]

Description

Define a function f(n)=(f(n-1)+1)/f(n-2). You already got f(1) and f(2). Now, give you a number m, please find the value of f(m). 

Input

There are several test cases. Each case contains three integers indicating f(1), f(2) and m ( 1 <= f(1), f(2), m <= 1000,000,000). 

Output

For each case, please output the value of f(m), rounded to 6 decimal places. 

Sample Input

1 1 3

Sample Output

2.0000
 
其实这个题目是有规律的,当你一直算下去的时候,不管你给f(1),f(2),赋值为什么,每5个将循环一次。故这样就可以递归了,不会发生栈溢出,也不会超时,还要注意的就是变量的类型。
下面是我的代码:

#include

double a,b;
long m;

double Re(int c)
{
    if(c==1)
        return a;
    else if(c==2)
        return b;
    else if(c==0)
    {
        c=5;
        return  (double)(Re(c-1)+1)/Re(c-2);
    }
    else
        return  (double)(Re(c-1)+1)/Re(c-2);


}
int main(void)
{
    while(scanf("%lf%lf%d",&a,&b,&m)==3)
    {
       double Result;
       Result=Re(m%5);
       printf("%.4lf\n",Result);
    }
    return 0;

}

你可能感兴趣的:(南华大学ACM个人连续第一场 E.Function)