Facebook Pixel

Fibonacci Modulo (Pisano Period)

JavaScript
hard
30 mins

Given integers n and m, compute F(n) mod m where F(n) is the nth Fibonacci number. The challenge is to handle very large values of n (up to 10^18) efficiently.

Key Insight: Fibonacci numbers modulo m are periodic with period length at most 6m (Pisano period).

Examples

Input: n = 10, m = 3
Output: 1
Explanation: F(10) = 55, 55 mod 3 = 1

Input: n = 1000000000000000000, m = 1000000007
Output: 209783453
Explanation: F(10^18) mod 10^9+7 using Pisano period

Input: n = 5, m = 2
Output: 0
Explanation: F(5) = 5, 5 mod 2 = 1 (but F(5) = 5, so 5 mod 2 = 1)

Input: n = 0, m = 1000
Output: 0
Explanation: F(0) = 0, 0 mod 1000 = 0

Input: n = 1, m = 1000
Output: 1
Explanation: F(1) = 1, 1 mod 1000 = 1

Mathematical Background

The Pisano period π(m) is the length of the period of the Fibonacci sequence taken modulo m. Key properties:

  1. π(m) ≤ 6m for all m
  2. F(n) mod m = F(n mod π(m)) mod m
  3. The period starts with F(0) mod m, F(1) mod m

Constraints

  • 0 ≤ n ≤ 10^18
  • 1 ≤ m ≤ 10^9
  • For large n, use Pisano period optimization
  • For small n, direct calculation is acceptable

Companies:

nvidia
reddit
paytm

Solve Similar questions 🔥

Please Login.
Please Login.
Please Login.
Please Login.
Please Login.
Please Login.
Please Login.
Please Login.
Please Login.
Please Login.
Please Login.