Advertisement
lalalalalalalaalalla

Untitled

Jan 15th, 2020
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.44 KB | None | 0 0
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <algorithm>
  4. #include <bitset>
  5. #include <set>
  6. #include <unordered_set>
  7. #include <map>
  8. #include <unordered_map>
  9. #include <cmath>
  10. #include <time.h>
  11. #include <random>
  12. #include <string>
  13. #include <cassert>
  14. #include <vector>
  15. #include <ostream>
  16. #include <istream>
  17.  
  18. using namespace std;
  19.  
  20. #define int long long
  21. #define pb push_back
  22. #define all(a) (a).begin(), (a).end()
  23.  
  24. #define LOCAL
  25.  
  26. #ifdef LOCAL
  27. #define dbg(x) cout << #x << " : " << (x) << "\n";
  28. #else
  29. #define dbg(x)
  30. #endif
  31.  
  32. ostream& operator << (ostream &a, const vector<int> &b) {
  33. for (auto k : b) cout << k << " ";
  34. cout << "\n";
  35. return a;
  36. }
  37.  
  38. const int mod = 1e9 + 7;
  39. const int p = 10;
  40. const int MAXL = 101;
  41.  
  42. int pw[MAXL];
  43.  
  44. inline int subh(const vector<int> &h, const int &l, const int &r) {
  45. int big = h[r], small = 0;
  46. if (l != 0) {
  47. small = h[l - 1];
  48. }
  49. return (big - ((small * pw[r - l + 1]) % mod) + mod) % mod;
  50. }
  51.  
  52. signed main() {
  53. ios_base::sync_with_stdio(0);
  54. cin.tie(0);
  55. cout.tie(0);
  56. pw[0] = 1;
  57. for (int i = 1; i < MAXL; i++) {
  58. pw[i] = (pw[i - 1] * p) % mod;
  59. }
  60. string s;
  61. cin >> s;
  62. int n = s.size();
  63. vector<int> h(n);
  64. h[0] = s[0] - 'a' + 1;
  65. for (int i = 1; i < n; i++) {
  66. h[i] = (h[i - 1] * p + (s[i] - 'a' + 1)) % mod;
  67. }
  68. cout << subh(h, 0, 2) << "\n" << subh(h, 1, 2) << "\n" << subh(h, 2, 2);
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement