D.cpp 935 B

12345678910111213141516171819202122232425262728293031323334
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. typedef unsigned long long LL;
  4. const int MAXN = 1000000 + 10;
  5. const LL MOD = 1000000007;
  6. LL f[MAXN][2][2] = {0};
  7. inline LL mpower(LL a, int x) {
  8. a %= MOD;
  9. if (x == 1 || a == 0)return a;
  10. if (x == 0)return 1;
  11. if (x & 1) return (a * mpower(a * a % MOD, x >> 1)) % MOD;
  12. return mpower(a * a % MOD, x >> 1);
  13. }
  14. int main() {
  15. int n;
  16. cin >> n;
  17. if (n < 3) {
  18. cout << 0 << endl;
  19. return 0;
  20. }
  21. f[3][0][0] = f[3][0][1] = f[3][1][0] = 2, f[3][1][1] = 1;
  22. for (int i = 4; i <= n; i++) {
  23. f[i][0][0] = (f[i - 1][0][0] + f[i - 1][0][1]) % MOD;
  24. f[i][0][1] = (f[i - 1][1][1] + f[i - 1][1][0]) % MOD;
  25. f[i][1][0] = (f[i - 1][0][0] + f[i - 1][0][1]) % MOD;
  26. f[i][1][1] = f[i - 1][1][0];
  27. }
  28. cout << ((mpower(2, n) - (f[n][0][0] + f[n][0][1] + f[n][1][0] + f[n][1][1])) % MOD + MOD) % MOD << endl;
  29. return 0;
  30. }