a53

robo

a53
Apr 19th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.90 KB | None | 0 0
  1. #include <iostream>
  2. #define p 1000000007
  3.  
  4. using namespace std;
  5. long long n, r, k, a, sol;
  6.  
  7. long long pow(long long e)
  8. {
  9. if(e == 0) return 1;
  10. else if(e % 2 == 0) { long long x = pow(e / 2); return (x * x) % p;}
  11. else return (2 * pow(e-1)) % p;
  12. }
  13.  
  14. int main()
  15. {
  16. cin >> n;
  17. r = n % 8;
  18. k = n / 8;
  19. switch(r)
  20. {
  21. case 0: a = pow(4*k-1); sol = (a * (a + 1)) % p; break;
  22. case 1: a = pow(4*k-1); sol = (a * (2 * a + 1)) % p; break;
  23. case 2: a = pow(8*k); sol = a; break;
  24. case 3: a = pow(4*k); sol = (a * (2 * a - 1 + p)) % p; break;
  25. case 4: a = pow(4*k+1); sol = (a * (a - 1 + p)) % p; break;
  26. case 5: a = pow(4*k+1); sol = (a * (2 * a - 1 + p)) % p; break;
  27. case 6: a = pow(8*k+4); sol = a; break;
  28. case 7: a = pow(4*k+2); sol = (a * (2 * a + 1)) % p; break;
  29. }
  30. cout << (sol - 1 + p) % p;
  31. return 0;
  32. }
Add Comment
Please, Sign In to add comment