Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define int long long
- using namespace std;
- const int Mod = 1e9 + 7;
- int n;
- struct Node {
- int a[5][5] {};
- friend Node operator*(Node a, Node b) {
- Node ans;
- for (int i = 1; i <= 2; i++)
- for (int j = 1; j <= 2; j++)
- for (int k = 1; k <= 2; k++)
- ans.a[i][j] += a.a[i][k] * b.a[k][j], ans.a[i][j] %= Mod;
- return ans;
- }
- } ans, b;
- signed main() {
- cin >> n;
- if (n <= 2) {
- cout << 1 << endl;
- return 0;
- }
- b.a[1][1] = b.a[1][2] = b.a[2][1] = 1;
- ans.a[1][1] = ans.a[1][2] = 1;
- n -= 2;
- while (n) {
- if (n & 1) ans = ans * b;
- b = b * b;
- n = n >> 1;
- }
- cout << ans.a[1][1] << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment