FibonacciPositioning(SRM298 Div1 Easy)
■問題
Fibonacci positionという値を定義する.n番目のFibonacci数をFn,Fibonacci positionをFPnとする時,FPnは以下の通り.
FP1=2
Fi=nの時,FPn=i
Fi<n<Fi+1の時,FP=i+(n-Fi)/(Fi+1-Fi)
FPnを求めよ.
■解法
問題の通り愚直に実装すればOK.
- public class FibonacciPositioning{
- public double getFPosition(int n){
- if(n==1) return 2.0;
- long a=1,b=1;
- for(int i=1;;i++){
- if(n==a)
- return i;
- if(a<n&&n<b)
- return i+(double)(n-a)/(b-a);
- a+=b;
- long t=a; a=b; b=t;
- }
- }
- }
0 件のコメント:
コメントを投稿