I have a problem about fibonacci numbers: ==================

## let f[i] be the ith fibonacci number

## f[i] = 1 (1 <= i <= 2)

## f[i] = f[i-1] + f[i-2] (i > 2)

how can i calculate f[f[n]] mod M (n, M <= 10^9). anyone can help me?

# | User | Rating |
---|---|---|

1 | tourist | 3870 |

2 | Benq | 3618 |

3 | Miracle03 | 3453 |

4 | peehs_moorhsum | 3430 |

5 | Radewoosh | 3418 |

6 | Petr | 3408 |

7 | maroonrk | 3387 |

8 | sunset | 3338 |

9 | ko_osaga | 3334 |

9 | jiangly | 3334 |

# | User | Contrib. |
---|---|---|

1 | YouKn0wWho | 214 |

2 | 1-gon | 203 |

3 | Um_nik | 195 |

4 | Errichto | 182 |

5 | awoo | 180 |

6 | tourist | 176 |

6 | sus | 176 |

8 | antontrygubO_o | 173 |

9 | maroonrk | 170 |

10 | -is-this-fft- | 169 |

I have a problem about fibonacci numbers: ==================

how can i calculate f[f[n]] mod M (n, M <= 10^9). anyone can help me?

↑

↓

Codeforces (c) Copyright 2010-2021 Mike Mirzayanov

The only programming contests Web 2.0 platform

Server time: Dec/05/2021 07:48:22 (k3).

Desktop version, switch to mobile version.

Supported by

User lists

Name |
---|

Auto comment: topic has been updated by hoainiem (previous revision, new revision, compare).https://codeforces.com/blog/entry/18292

i don't think these 2 problems are similar. your problem is calculate the nth fibonacci number , which can be solved by matrix multiplication. but we can't use it to solve my problem because f[n] can be very large, and we can't use modules because (f[f[n]]) mod m is not equal to (f[f[n]mod m] ) mod m

sorry, my bad I misread the problem I thought you are asking for

`f[n] % M`

.I guess you can try to find pisano period of M, then calculate f[n] mod P(m), where P(i) — pisano period of modulo i, and then calculate the final answer mod M.

Though I'm not sure how to calculate pisano period for such big M, you can try to look for some optimizations here.(also google is your big friend here)

thank you very much. i've tried to google it but i can't find any way to calculate pisano period for m <= 1^9

I (definitely didn't find it in The Ultimate Topic List) found implementation that calculates Pisano period, not sure it'll work with big M, but it might be a good try

i finally get accepted this problem and it's all due to your help. Thanks you.

Glad to hear it :)

Here is the solution https://www.youtube.com/watch?v=dQw4w9WgXcQ

:))

That's a bad way to rickroll people, this tutorial teaches how to do it better.

That's the solution for every problem i.g.