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 件のコメント:
コメントを投稿