1 条题解

  • 0
    #include<iostream>
    #include<cstdio>
    using namespace std;
    int ne[1000001];
    int main(){
        string a;
        while(cin>>a){
        	if(a==".")break;
        	int le=a.size();
        	ne[0]=-1;
        	for(int i=1,j=-1;i<le;++i){
        		while(~j&&a[j+1]!=a[i])j=ne[j];
        		if(a[j+1]==a[i])j++;
        		ne[i]=j;
    		}
    		if(le%(le-1-ne[le-1])==0)printf("%d\n",le/(le-1-ne[le-1]));
    		else puts("1");
    	}
        return 0;
    }
    
    • 1

    信息

    ID
    378
    时间
    1000ms
    内存
    512MiB
    难度
    6
    标签
    递交数
    83
    已通过
    23
    上传者