Submit | All submissions | Best solutions | Back to list |
FIBOSUM - Fibonacci Sum |
The Fibonacci sequence is defined by the following relation:
- F(0) = 0
- F(1) = 1
- F(N) = F(N - 1) + F(N - 2), N >= 2
Your task is very simple. Given two non-negative integers N and M, you have to calculate the sum (F(N) + F(N + 1) + ... + F(M)) mod 1000000007.
Input
The first line contains an integer T (the number of test cases). Then, T lines follow. Each test case consists of a single line with two non-negative integers N and M.
Output
For each test case you have to output a single line containing the answer for the task.
Example
Input: 3 0 3 3 5 10 19 Output: 4 10 10857
Constraints
- T <= 1000
- 0 <= N <= M <= 109
Added by: | David Gómez |
Date: | 2010-12-04 |
Time limit: | 1s |
Source limit: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Languages: | All except: ASM64 |
Resource: | My Own |
hide comments
|
||||||||||||||
2015-07-05 08:44:29 Ashish
Oh never mind. I read it from Wikipedia anyway. Turns out : summation ( F[i] , n<= i <= m ) = F(m+2) - F(n+1) ( n>= 0 ), so it can be done in O(logm) time only. Use approximation to Binnet's formula: F(n) = (round) [(Phi)^(n) / sqrt(5)] ; where Phi is the golden ratio. [ Fib(10^(9)) has 208987640 digits ] Last edit: 2015-07-06 09:07:42 |
||||||||||||||
2015-07-04 19:21:52 Ashish
What is the link to Rafael Perella's thread? I am getting TLE despite using a O( logn + (m-n) ) algorithm. ( O(logn) to find f(n) and O(m-n) to compute f(i) ( n<=i<=m) and sum, and take modulo. I am even taking modulo at the matrix multiplication step. But I am using a recursive function instead of a loop for the O(logn) part. Is that the reason? plz help..... |
||||||||||||||
2015-06-23 18:35:23 14mandeep
finally accepted learnt hell lot of things |
||||||||||||||
2015-06-23 11:19:51 Master_Card
my 150th :) Good question!! |
||||||||||||||
2015-06-22 18:13:46
My LOL moment.. loaded 2 times the old code while tweaking the new one. GOT WA 2-3 times i guess :P ... #BEWARE Hint: Tweak your O(logn) code as @Arjun says. Thanks to you. @Arjun. |
||||||||||||||
2015-06-13 14:30:59
thanks @Arjun, I ignored the negative mod. Finally submitted. :') |
||||||||||||||
2015-06-12 15:13:51 Arjun Verma
1)mod operation on matrix multiplication . 2)take care for mod of a negative number 3)use long long . |
||||||||||||||
2015-06-09 17:23:26
I am getting WA after submitting, but on ideone it's giving the desired output. I've used Matrix method of solving and long int. |
||||||||||||||
2015-06-06 21:41:31 Surya Sekhar Mondal
use long long , cost me 3 WAs |
||||||||||||||
2015-06-03 13:32:33 priyank
use modulus while matrix multiplication and at final answer and take care of neg modulus too :) |