UOJ Logo

NOI.AC

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#205970#3169. 密码Anthonyyan100173ms21744kbC++111.4kb2024-07-20 18:28:572024-07-20 20:10:01

answer

#include <bits/stdc++.h>
#define MAXN (1000010)
#define MOD (1932847031)
#define base (13331)
using namespace std;

char s[MAXN];
int nxt[MAXN];
long long h[MAXN];
int n;
long long power[MAXN];
int minn = INT_MAX;

int main(int argc, char const *argv[])
{
#ifndef ONLINE_JUDGE
  freopen("_data.in", "r", stdin);
  // freopen("_data.out", "w", stdout);
#endif
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  cout.tie(nullptr);
  cin >> (s + 1);
  n = strlen(s + 1);
  power[0] = 1;
  for (int i = 1; i <= n; i++)
    power[i] = power[i - 1] * base % MOD;
  for (int i = 1; i <= n; i++)
    h[i] = ((long long)h[i - 1] * base % MOD + s[i]) % MOD;
  for (int i = 1, j = 0; i < n; i++)
  {
    while (j > 0 && s[i + 1] != s[j + 1])
      j = nxt[j];
    if (s[i + 1] == s[j + 1])
      j++;
    nxt[i + 1] = j;
  }
  for (int i = n; i; i = nxt[i])
    minn = min({minn, nxt[i], nxt[i]});
  int cur = n;
  while (cur)
  {
    int len = nxt[cur];
    if (!len)
      break;
    if (len <= n - minn)
    {
      long long ha = h[len];
      for (int i = 2; i <= n - len; i++)
      {
        long long num = (h[i + len - 1] - h[i - 1] * power[len] % MOD + MOD) % MOD;
        if (num == ha)
        {
          for (int i = 1; i <= len; i++)
            cout << s[i];
          return 0;
        }
      }
    }
    cur = len;
  }
  cout << -1;
  return 0;
}

详细

小提示:点击横条可展开更详细的信息

Test #1:

score: 10
Accepted
time: 0ms
memory: 1212kb

input:

aaaaaaabbbabbbbabbabaaaaaabbaabbaaaaaaaaaabbbabbbbabbabaaaaaabbaabbaaaaaaaaaabbbabbbbabbabaaaaaabbaa

output:

aaaaaaabbbabbbbabbabaaaaaabbaa

result:

ok single line: 'aaaaaaabbbabbbbabbabaaaaaabbaa'

Test #2:

score: 10
Accepted
time: 0ms
memory: 1212kb

input:

aababaaababaaababaaababaaababaaababaaababaaababaaababaaababaaababaaababaaababaaababaaababaaababaaaba

output:

aababaaababaaababaaababaaababaaababaaababaaababaaababaaababaaababaaababaaababaaababaaaba

result:

ok single line: 'aababaaababaaababaaababaaababa...abaaababaaababaaababaaababaaaba'

Test #3:

score: 10
Accepted
time: 0ms
memory: 1232kb

input:

yhggbzbxmpjummidyhggbzbxmpjummidyhggbzbxmpjummidyhggbzbxmpjummidyhggbzbxmpjummidyhggbzbxmpjummidyhgg...

output:

yhggbzbxmpjummidyhggbzbxmpjummidyhggbzbxmpjummidyhggbzbxmpjummidyhggbzbxmpjummidyhggbzbxmpjummidyhgg...

result:

ok single line: 'yhggbzbxmpjummidyhggbzbxmpjumm...pjummidyhggbzbxmpjummidyhggbzbx'

Test #4:

score: 10
Accepted
time: 0ms
memory: 1236kb

input:

prvokxwfcyjyeprvokxwfcyjyeprvokxwfcyjyeprvokxwfcyjyeprvokxwfcyjyeprvokxwfcyjyeprvokxwfcyjyeprvokxwfc...

output:

prvokxwfcyjyeprvokxwfcyjyeprvokxwfcyjyeprvokxwfcyjyeprvokxwfcyjyeprvokxwfcyjyeprvokxwfcyjyeprvokxwfc...

result:

ok single line: 'prvokxwfcyjyeprvokxwfcyjyeprvo...fcyjyeprvokxwfcyjyeprvokxwfcyjy'

Test #5:

score: 10
Accepted
time: 1ms
memory: 1236kb

input:

kbnoefznwkhnwgqynrxdgdqjyijlhjyiamdcympayyezqrpsaxgoxtdfwnxurbuowqcyhlqzjgghqcpvbhoydegeefqcpmohqpep...

output:

kbnoefznwkhnwgqynrxdgdqjyijlhjyiamdcympayyezqrpsaxgoxtdfwnxurbuowqcyhlqzjgghqcpvbhoydegeefqcpmohqpep...

result:

ok single line: 'kbnoefznwkhnwgqynrxdgdqjyijlhj...ntpjpztjkkfqtcijbvnytdhyeqikcfq'

Test #6:

score: 10
Accepted
time: 59ms
memory: 21716kb

input:

crwffzvkdcsiccrwffzvkdcsiccrwffzvkdcsiccrwffzvkdcsiccrwffzvkdcsiccrwffzvkdcsiccrwffzvkdcsiccrwffzvkd...

output:

crwffzvkdcsiccrwffzvkdcsiccrwffzvkdcsiccrwffzvkdcsiccrwffzvkdcsiccrwffzvkdcsiccrwffzvkdcsiccrwffzvkd...

result:

ok single line: 'crwffzvkdcsiccrwffzvkdcsiccrwf...csiccrwffzvkdcsiccrwffzvkdcsicc'

Test #7:

score: 10
Accepted
time: 37ms
memory: 21720kb

input:

yxwsxywxkrzlqsiwdspucezlkgshfzctbpyildxbwnmlkecqqotojgxbemfzodkrcushnizzugwuaojfqblyhlfbpqwactpcdgur...

output:

yxwsxywxkrzlqsiwdspucezlkgshfzctbpyildxbwnmlkecqqotojgxbemfzodkrcushnizzugwuaojfqblyhlfbpqwactpcdgur...

result:

ok single line: 'yxwsxywxkrzlqsiwdspucezlkgshfz...rzlqsiwdspucezlkgshfzctbpyildxb'

Test #8:

score: 10
Accepted
time: 26ms
memory: 21716kb

input:

bnlwrkorxmhhlvcpacuxjzeuuggrobdywjzqaafaamhoqebzupzyqwfcmanbuocdodaooxxuukbqevlidlspvlquwcabsylqiadv...

output:

bnlwrkorxmhhlvcpacuxjzeuuggrobdywjzqaafaamhoqebzupzyqwfcmanbuocdodaooxxuukbqevlidlspvlquwcabsylqiadv...

result:

ok single line: 'bnlwrkorxmhhlvcpacuxjzeuuggrob...mhhlvcpacuxjzeuuggrobdywjzqaafa'

Test #9:

score: 10
Accepted
time: 20ms
memory: 21744kb

input:

sqomhzwerrhbmqvtukrgmkxrbgfrwdsrrkqwwxugmhzfgkjtzgpzaqbtworlitprwutprgamridxmnrzjkwnvlotnkscgqcbsnjs...

output:

-1

result:

ok single line: '-1'

Test #10:

score: 10
Accepted
time: 30ms
memory: 21716kb

input:

qtkmtpbygecktzwbjnfhkixcaikrrbwrblidemsjdvojwnctrlkvcvuvdppudyjlstpulczgiofeuuypedxsktxhpzofouwrzfjj...

output:

qtkmtpbygecktzwbjnfhkixcaikrrbwrblidemsjdvojwnctrlkvcvuvdppudyjlstpulczgiofeuuypedxsktxhpzofouwrzfjj...

result:

ok single line: 'qtkmtpbygecktzwbjnfhkixcaikrrb...crqfygiiennmbvsutqtfgvvrwlocprl'

Extra Test:

score: 0
Extra Test Passed