斐波那契求逆(凹函数与约数)

Fibonacci数列

http://www.nowcoder.com/questionTerminal/18ecd0ecf5ef4fe9ba3f17f8d00d2d66

通项公式求逆:

import java.util.*;
public class Main {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        double x = sc.nextDouble();
        double a = Math.sqrt(5.0);
        double temp1 = (1.0 + a)/2.0;
        double temp2 = (1.0 - a)/2.0;
        double r = Math.log(x*a)/Math.log(temp1);//利用通项公式求这是第几项,忽略较小幂
        int res = (int)Math.round(r);
        int res2 = res - 1;
        int k = (int)(1.0/a*(Math.pow(temp1, res) - Math.pow(temp2, res)));
        int k2 = (int)(1.0/a*(Math.pow(temp1, res2) - Math.pow(temp2, res2)));
        int p = Math.min((int)Math.abs(x - k), (int)Math.abs(x - k2));
        System.out.println(p);
    }
}
全部评论

相关推荐

cpp苦手:一眼ddl
点赞 评论 收藏
分享
04-18 15:58
已编辑
门头沟学院 设计
kaoyu:这一看就不是计算机的,怎么还有个排斥洗碗?
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务