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
|
||||||||||||||
2013-09-11 15:50:43 Ouditchya Sinha
@Rafael Perrella : Thank you for answering my question & congratulations for solving this problem in 0.00s. :) Yes, I solved this using matrix exponentiation. O(__builtin_popcount(N)) is definitely better than O( log(N) ). Can you please provide any link where this type of algorithm is discussed? Or maybe we can start a thread on forum? @Rafael Perrella : Thank You for sharing your Algorithm!! I'll try to understand it. :) Last edit: 2013-09-12 12:09:37 |
||||||||||||||
2013-09-11 12:05:03 Rafael Perrella
@Mayank 999975531 @Ouditchya Did you calculate F(N) using matrix exponentiation? It's not fast enough to get 0.00, I guess. My algorithm, for a given N, calculates F(N) in O(__builtin_popcount(N)) time, with a really small constant. I wrote this algorithm based on the following property: F(n+k) = F(k)F(n+1) + F(k-1)F(n) |
||||||||||||||
2013-09-07 04:37:52 YoungMoon KO
Excellent problem. I've learned a lot of things about Fibonacci sequence. Refers http://www.maths.surrey.ac.uk/hosted-sites/R.Knott/Fibonacci/fibFormula.html#exact Last edit: 2013-09-07 04:38:51 |
||||||||||||||
2013-09-06 20:40:18 hiddenman
gud 1 learn a lot abt fibo series....... :) |
||||||||||||||
2013-08-26 20:04:43 Ouditchya Sinha
How is 0.00s possible? I can only get 0.01s. |
||||||||||||||
2013-08-25 09:33:06 Anubhav Balodhi
got ac in 3rd try, learnt a lot about fibonacci numbers :D |
||||||||||||||
2013-08-19 13:06:10 Amitayush Thakur
good question to learn application of Divide and conquer :) |
||||||||||||||
2013-07-10 17:57:08 Vijay Jain
after that u may try solving this question: http://www.spoj.com/problems/BUILDTOW/ |
||||||||||||||
2013-07-09 09:26:47 Joey Tribbiani
How do you store the fibonacci number? As in how to store F(1000000000). Cant use long long int, overflows. |
||||||||||||||
2013-06-20 20:51:55 No_words
Nice Question. Learned a lot ! :) |