Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <cstring>
- #include <algorithm>
- using namespace std;
- char s[1000010];
- long long hash[1000010];
- long long res[1000010];
- const
- int p = 239017;
- long long pr(long long p, int d)
- {
- long long l = p;
- for (int i = 1; i < d; i++)
- {
- l = l * p;
- }
- return l;
- }
- int main()
- {
- int n, i, k;
- freopen("autoreg.in", "r", stdin);
- freopen("autoreg.out", "w", stdout);
- gets(s);
- scanf("%d", &k);
- hash[0] = s[0];
- n = strlen(s);
- for (i = 1; i < n;i++)
- {
- hash[i] = hash[i - 1] * p + s[i];
- printf("%I64d\n", hash[i]);
- }
- printf("\n");
- for (i = 0; i < n - k + 1; i++)
- {
- if (i)
- res[i] = hash[i + k - 1] - hash[i - 1] * pr(p, k);
- else
- res[i] = hash[i + k - 1];
- printf("%I64d\n", res[i]);
- }
- sort (res, res + (n - k + 1));
- for (i = 0; i < n - k; i++)
- {
- if (res[i] == res[i + 1])
- {
- printf("YES");
- return 0;
- }
- }
- printf("NO");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement