您的位置:首页 > 其它

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

2013-07-08 10:45 453 查看


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<stdio.h>

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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: