ulvis.paste.net

Paste Search Dynamic
Recent pastes
hash
  1. struct hash_str {
  2.     vector<solt> pref;
  3.  
  4.     explicit hash_str(const string &s) : pref(s.size() + 1){
  5.         while (pows.size() <= s.size())
  6.             pows.push_back(pows.back() * base % mod);
  7.         for (solt i = 0; i < s.size(); ++i)
  8.             pref[i + 1] = (pref[i] + (s[i] - 'a' + 1) * pows[i]) % mod;
  9.     }
  10.  
  11.     // Functor (Обожаю плюсы за это)
  12.     // Hash from [pos; pos + len)
  13.     solt operator()(const solt pos, const solt len, const solt addPow = 0) const {
  14.         solt hash = pref[pos + len] - pref[pos];
  15.         if (hash < 0)
  16.             hash += mod;
  17.         if (addPow != 0)
  18.             hash = hash * pows[addPow - (pos + len - 1)] % mod;
  19.         return hash;
  20.     }
  21. };
Parsed in 0.006 seconds