poj 2406

来源:互联网 发布:淘宝达人 自媒体 认证 编辑:程序博客网 时间:2024/06/07 12:22
点击打开链接//求循环次数#include <iostream>#include<cstdio>#include<cstring>#include<cmath>using namespace std;const int maxn=1e6+5;char T[maxn];int m;void Getnext(int next[]){    int i=0,j=next[0]=-1;    m=strlen(T);    while(i<m)    {        if(j==-1||T[i]==T[j])        {            i++;            j++;            next[i]=j;        }        else j=next[j];    }}int main(){    while(scanf("%s",T)!=EOF)    {        if(T[0]=='.') break;        int next[maxn];        Getnext(next);              //得到next数组        int k=1;        if(m%(m-next[m])==0)            k=m/(m-next[m]);        printf("%d\n",k);    }    return 0;}

原创粉丝点击