Advertisement
Rentib

podsłowa

Mar 15th, 2020
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.88 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. long long h[200007], p = 1, q = 1000000021, f[200007];
  4. long long power(long long x, long long y){
  5. long long ret = 1;
  6. while (y > 0){
  7. if(y % 2)
  8. ret = (ret * x) % q;
  9. y /= 2;
  10. x = (x * x) % q;
  11. }
  12. return ret;
  13. }
  14. long long hasz(long long a, long long l){
  15. return ((((h[a + l] - h[a]) % q + q) % q) * f[a]) % q;
  16. }
  17. int main(){
  18. ios_base::sync_with_stdio(0);
  19. cin.tie(0);
  20. long long n, m, fermat = power(997, q - 2);
  21. string s;
  22. cin >> s >> m;
  23. n = s.size();
  24. f[0] = 1;
  25. for (long long i = 1;i<=n + 7;i++)
  26. f[i] = (f[i - 1] * fermat) % q;
  27. for(long long i = 0;i < n;i++){
  28. h[i + 1] = (h[i] + s[i] * p) % q;
  29. p = (p * 997) % q;
  30. }
  31. for(long long i = 0, a, b, l;i < m;i++){
  32. cin >> a >> b >> l;
  33. if(hasz(a - 1, l) == hasz(b - 1, l)) cout << "TAK\n";
  34. else cout << "NIE\n";
  35. }
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement