题目描述:
Definea function f(n)=(f(n-1)+1)/f(n-2). You already got f(1) and f(2). Now, give youa number m, please find the value of f(m).
Input
There are several test cases. Each casecontains 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 off(m), rounded to 6 decimal places.
SampleInput
1 1 3
SampleOutput
2.000000
题目描述:
这道题给了一公式:f(n)=(f(n-1)+1)/f(n-2),通过这公式·不难发现这其实是有一定规律的。f(1)到f(5)每5个一循环 ,这样只需求出每5个的值、再找出f(m)的值即可。下面是代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i,num,m;
double v1[10],v2,v3,value,a,b;
while(scanf("%lf%lf%d",&a,&b,&m)!=EOF)
{
for(i=0;i<5;i++)
{
v2=(b+1)/a;
v1[i]=v2;
v3=v2;
a=b;
b=v3;
}
num=m%5;
switch(num){
case 0:value=v1[2];break;
case 1:value=v1[3];break;
case 2:value=v1[4];break;
case 3:value=v1[0];break;
case 4:value=v1[1];break;
}
printf("%.6lf\n",value);
}
return 0;
}