Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- long long h[200007], p = 1, q = 1000000021, f[200007];
- long long power(long long x, long long y){
- long long ret = 1;
- while (y > 0){
- if(y % 2)
- ret = (ret * x) % q;
- y /= 2;
- x = (x * x) % q;
- }
- return ret;
- }
- long long hasz(long long a, long long l){
- return ((((h[a + l] - h[a]) % q + q) % q) * f[a]) % q;
- }
- int main(){
- ios_base::sync_with_stdio(0);
- cin.tie(0);
- long long n, m, fermat = power(997, q - 2);
- string s;
- cin >> s >> m;
- n = s.size();
- f[0] = 1;
- for (long long i = 1;i<=n + 7;i++)
- f[i] = (f[i - 1] * fermat) % q;
- for(long long i = 0;i < n;i++){
- h[i + 1] = (h[i] + s[i] * p) % q;
- p = (p * 997) % q;
- }
- for(long long i = 0, a, b, l;i < m;i++){
- cin >> a >> b >> l;
- if(hasz(a - 1, l) == hasz(b - 1, l)) cout << "TAK\n";
- else cout << "NIE\n";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement