我在下面遇到了一个问题但我没有得到解决方案因此寻求你的帮助。 函数GF定义如下
GF(A,B,0)=A
GF(A,B,1)=B
GF(A,B,N)= GF(A,B,N-1)+GF(A,B,N-2) where N>1
给定3个非负数A B N从除1000000007
For example given A =3 B=4 n =5 the function should return 29 BECAUSE
GF(3,4,0)= 3 mod 1000000007 = 3
GF(3,4,1)= 4 mod 1000000007 = 4
GF(3,4,2)= (GF(3,4,0)+GF(3,4,1)) mod 1000000007 =7
GF(3,4,3)= (GF(3,4,1)+GF(3,4,2)) mod 1000000007 =11
GF(3,4,4)= (GF(3,4,2)+GF(3,4,3)) mod 1000000007 =18
GF(3,4,5)= (GF(3,4,3)+GF(3,4,4)) mod 1000000007 =29
空间复杂度O(N)时间O(Nlog N)
我正在寻找如何处理这个java伪代码或解决方案我尝试了4到5小时但未能继续前进因此寻求你的帮助
由于
答案 0 :(得分:9)
我会为你提供如何解决问题的方法,这是你的功课,你应该向他们学习。
n
的数组。设为arr
(int[] arr = new int[n]
)arr
初始化a,b
的前2个元素:arr[0] = a % 1000000007 ; arr[1] = b % 1000000007 ;
n
从2迭代到for (int i = 2; i < n; i++)
,并为每个迭代集arr[i] = (arr[i-1] + arr[i-2]) % 1000000007;
全部包装,你得到你的答案。祝你好运。