zoukankan      html  css  js  c++  java
  • URAL1133. Fibonacci Sequence(二分)

    1133

    刚开始还用记忆化推了下公式 后来发现数是非常大的 

    二分 然后就是精度错误 中间值会很大

    乱七八糟的改

     1 #include <iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<stdlib.h>
     6 #include<cmath>
     7 #include<vector>
     8 using namespace std;
     9 #define LL long long
    10 #define INF 2147483647
    11 long double f[3010];
    12 int main()
    13 {
    14     LL i,j,s1,s2,t,n,g;
    15     cin>>i>>s1>>j>>s2>>n;
    16     i+=1005;j+=1005;n+=1005;
    17     if(i>j)
    18     {
    19         t = i;i = j;j = t;
    20         t = s1;s1 = s2; s2 = t;
    21     }
    22     f[i] = s1;
    23     f[j] = s2;
    24     if(j!=i+1)
    25     {
    26         long double low = -INF,high = INF,m;
    27         while(low<high)
    28         {
    29             m = (low+high)/2;
    30             f[i+1] = m;
    31             for(g = i+2 ; g < j ; g++)
    32             {
    33                 f[g] = f[g-1]+f[g-2];
    34             }
    35             long double tt = f[j-1]+f[j-2];
    36             if(tt<s2)
    37             low = m+1;
    38             else if(tt>s2)
    39             high = m-1;
    40             else low=m,high=m;
    41         }
    42         f[i+1] = (low+high)/2;
    43         for(g = i+2 ; g < j ; g++)
    44         {
    45             f[g] = f[g-1]+f[g-2];
    46         }
    47     }
    48     if(n<i)
    49     {
    50         for(g = i-1 ; g >= n ; g--)
    51             f[g] = f[g+2]-f[g+1];
    52     }
    53     else if(n>j)
    54     {
    55         for(g = j+1 ; g <= n ; g++)
    56             f[g] = f[g-1]+f[g-2];
    57     }
    58     cout<<(LL)f[n]<<endl;
    59     return 0;
    60 }
    View Code
  • 相关阅读:
    过滤器解决乱码问题
    读取配置文件javase
    Django
    python之路
    最火的前端框架--Vue
    web前端
    MySQL笔记
    python 从想学到坚持
    python 坚持下来会更好
    简单的装系统大佬别喷谢谢拉 欢迎指出不足指出
  • 原文地址:https://www.cnblogs.com/shangyu/p/3408715.html
Copyright © 2011-2022 走看看