http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3907
解题思路:笔算后会发现5个一循环,处理下浮点数就好。
代码:
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#define MAXN 0
#define INF 0x7fffffff
#define eps 1e-10
#define MAX(x,y) ((x)>(y)? (x):(y))
#define MIN(x,y) ((x)<(y)? (x):(y))
#define MEM(a) (memset((a),0,sizeof(a)))
#define FRE freopen("input.txt","r",stdin)
using namespace std;
double a[5];
int main()
{
int x,y;
long long int n;
while(scanf("%d%d%lld",&x,&y,&n))
{
int z=n%5;
if(!x && !y && !z) break;
a[0]=x; a[1]=y;
for(int i=2;i<5;i++)
a[i]=(1+a[i-1])/a[i-2];
int ans=(int)(a[n%5]+eps);
printf("%d\n",ans);
}
return 0;
}