Probelem 给定g n 的递归关系为
g 0 = c其中是一个双重的。
g n = f(g n-1 ),其中f是线性函数
然后找到
给出的另一次重复的值h n = g n / exp(n)
约束: 1< = n< = 10 ^ 9
在数学上,g(n)的值可以在log(n)时间内计算,然后h(n)可以很容易地计算,但问题是双精度数据类型的溢出。因此,上述策略仅适用于大约1000的n,但不适用于较大的n。注意,h(n)的值可以在双精度范围内
实际问题是我们试图从g(n)计算h(n)。我的问题是,有没有什么好方法可以直接计算h(n)而不会溢出双打。
答案 0 :(得分:1)
G0=c
G1=ac+b
G2=a²c+ab+b
G3=a³c+a²b+ab+b
...
Gn=a^nc+b(a^n-1)/(a-1)
然后
Hn = (a/e)^nc+b((a/e)^n-1/e^n)/(a-1) ~ (a/e)^n (c + b/(a-1))