hdu 4763

来源:互联网 发布:全民tv帝师淘宝店 编辑:程序博客网 时间:2024/04/30 09:58

错误的测试数据成就了哥潇洒的三十行代码

#include <iostream>#include <cstdio>#include <cstring>#define sf(s) scanf("%d",&s)#define pf(s) printf("%d\n",s)#define _sf(str) scanf("%s",str)using namespace std;char P[1000010];int f[1000010];void getFail(char* P,int* f,int &m){    m=strlen(P);    f[0]=0;f[1]=0;    for(int i=1;i<m;i++){        int j=f[i];        while(j && P[i]!=P[j])            j=f[j];        f[i+1]=P[i]==P[j]?j+1:0;    }}int main(){    int t;    sf(t);    while(t--){        _sf(P);        int m;        getFail(P,f,m);        pf(f[m]);    }    return 0;}