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; }