记录编号 434225 评测结果 AAAAAAAAAA
题目名称 鱼的感恩 最终得分 100
用户昵称 GravatarHZOI_蒟蒻一只 是否通过 通过
代码语言 C++ 运行时间 4.747 s
提交时间 2017-08-07 14:27:36 内存使用 1.74 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const long long BASE=23333;
const int maxn=100005;
unsigned long long HA[maxn],poww[maxn];
char s[maxn];
unsigned long long getha(int l,int r)
{
    return HA[r]-HA[l-1]*poww[r-l+1];
}
int len;
bool check(int val)
{
    unsigned long long s1=getha(len-val+1,len),s2=getha(1,val);
    if(s1!=s2)return 0;
    for(int i=2;i<=len-val;i++)
    {
        unsigned long long s3=getha(i,i+val-1);
        if(s3==s1)
            return 1;
    }
    return 0;
}
int haha()
{
    freopen("fool.in","r",stdin);
    freopen("fool.out","w",stdout);
    int n;scanf("%d",&n);
    while(n--)
    {
        scanf("%s",s+1);len=strlen(s+1);
        poww[0]=1;
        for(int i=1;i<=100000;i++)poww[i]=poww[i-1]*BASE;
        HA[0]=0;
        for(int i=1;i<=len;i++)
        {
            HA[i]=HA[i-1]*BASE+s[i]-'a';
        }
        int ans=0;
        for(int i=len-2;i;i--)
            if(check(i)){ans=i;break;}
        if(!ans)puts("---");
        else 
        {
            for(int i=1;i<=ans;i++)putchar(s[i]);
            puts("");
        }
    }
}
int sb=haha();
int main(){;}