Advertisement
Guest User

Untitled

a guest
Jul 25th, 2017
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.70 KB | None | 0 0
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <cstdio>
  4. #include <vector>
  5. #include <string>
  6. #include <cstdlib>
  7. #include <cmath>
  8. #include <iomanip>
  9. #include <cstring>
  10. #include <cassert>
  11. #include <queue>
  12. #include <set>
  13.  
  14. using namespace std;
  15.  
  16. string s;
  17.  
  18. const long long MAX = 1e6;
  19.  
  20. const long long p = 2017;
  21.  
  22. const long long base = 1e9+7;
  23.  
  24. vector <long long> deg(MAX);
  25.  
  26.  
  27. void prefix_calc(vector <long long> &deg){
  28.  
  29.     deg[0] = 1;
  30.  
  31.     for (int i = 1;i<s.size();++i)
  32.         deg[i] = deg[i-1]*p;
  33. }
  34.  
  35. vector < long long > hash_calc(string s){
  36.     vector < long long > res(s.size());
  37.  
  38.     res[0] = int(s[0]) - int('a') + 1;
  39.  
  40.     for ( int i = 1; i < s.size(); i++)
  41.         res[i] = (res[i-1] +  (int(s[0]) - int('a') + 1) * deg[i] ) % base;
  42.  
  43. }
  44.  
  45. int get_hash(int l,int r, vector <long long> hash_now){
  46.     if(l==0)
  47.         return hash_now[r];
  48.  
  49.     long long  res = (hash_now[r] - hash_now[l-1]) % base;
  50.         if(res<0)
  51.             res += base;
  52.         return res;
  53.  
  54. }
  55.  
  56. int main() {
  57.     ios_base::sync_with_stdio(false);
  58.     cin.tie(nullptr);
  59.     cin >> s;
  60.     int n = s.size();
  61.     string s1 = s;
  62.     reverse(s.begin(),s.end());
  63.     string s2;
  64.     s2 = s;
  65.     s = s1;
  66.     s1 = s2;
  67.     vector <int> h(n);
  68.     vector <int> h1(n);
  69.     /*for (int i = 0;i<n;++i){
  70.         cout << h[i] << " ";
  71.     }
  72.     cout << "\n";
  73.     for (int i = 0;i<n;++i){
  74.         cout << h1[i] << " ";
  75.     }
  76.     cout << "\n";
  77.     */
  78.     prefix_calc(deg);
  79.     for (int i = 0;i<s.size();++i){
  80.         cout << deg[i] << " ";
  81.     }
  82.     for (int i = 0;i<s.size();++i){
  83.         h[i] = hash_calc(s)[i];
  84.         h1[i] = hash_calc(s1)[i];
  85.     }
  86.     int ans = 0;
  87.     cout << ans;
  88.     return 0;
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement