Period HDU - 1358(kmp&&循环节)喝水,喝水,我爱喝水

    科技2025-05-31  45

    Period HDU - 1358

    题意&&思路:

    基本和uva那道eg题一模一样。

    Period UVA - 1328

    AC

    #include <iostream> #include <cstring> using namespace std; const int maxm=1e6+10; char p[maxm]; int m, nxt[maxm]; void getnxt(){ int i=0, j=-1; nxt[0]=-1; while(i<m){ if(j==-1||p[i]==p[j])nxt[++i]=++j; else j=nxt[j]; } } int main() { ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); int kase=0; while(cin>>m&&m){ cin>>p; getnxt(); cout<<"Test case #"<<++kase<<endl;//1" for(int i=2; i<=m; i++){ if(nxt[i]>0 && i%(i-nxt[i])==0)cout<<i<<' '<<i/(i-nxt[i])<<endl; } cout<<endl; } return 0; }
    Processed: 0.013, SQL: 8