Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <vector>
- #include <iostream>
- #include <fstream>
- #include <set>
- #include <algorithm>
- #include <map>
- #include <list>
- #include <string>
- #include <ctime>
- #include <random>
- #include <stack>
- #include <iomanip>
- #include <deque>
- #include <queue>
- #include <ctime>
- #include <bitset>
- #include <fstream>
- using namespace std;
- typedef long long ll;
- const long long inf = 2e9;
- const long long mod = 1e9 + 7;
- string s, r;
- int n;
- vector<ll>pr;
- vector<ll>po;
- ll b = 31;
- long long get_hash(int pos) {
- return (pr[pos + n] - (pr[pos] * po[n]) % mod + mod) % mod;
- }
- int main() {
- ios_base::sync_with_stdio(0);
- cin.tie(0);
- cout.tie(0);
- cin >> s;
- r = s;
- n = s.size();
- reverse(r.begin(), r.end());
- s += s;
- pr.resize(2 * n + 1);
- po.resize(2 * n + 1);
- po[0] = 1;
- for (int i = 1; i <= 2 * n; i++) {
- po[i] = po[i - 1] * b;
- po[i] %= mod;
- }
- for (int i = 1; i <= n * 2; i++) {
- pr[i] = (pr[i - 1] * b + (s[i - 1] - 'a' + 1)) % mod;
- }
- ll ch = 0;
- ll t = 1;
- for (int i = 1; i <= n; i++) {
- ch += (po[n-i] * (r[i - 1] - 'a' + 1)) % mod;
- ch %= mod;
- }
- for (int i = 0; i < n; i++) {
- if (get_hash(i) == ch) {
- cout << i;
- system("pause>nul");
- return 0;
- }
- }
- cout << -1;
- //system("pause>nul");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement