zoukankan      html  css  js  c++  java
  • poj2406 Power Strings

    Description

    Given two strings a and b we define a*b to be their concatenation. For example, if a = "abc" and b = "def" then a*b = "abcdef". If we think of concatenation as multiplication, exponentiation by a non-negative integer is defined in the normal way: a^0 = "" (the empty string) and a^(n+1) = a*(a^n).

    Input

    Each test case is a line of input representing s, a string of printable characters. The length of s will be at least 1 and will not exceed 1 million characters. A line containing a period follows the last test case.

    Output

    For each s you should print the largest n such that s = a^n for some string a.

    Sample Input

    abcd
    aaaa
    ababab
    .
    

    Sample Output

    1
    4
    

    3

    这题就是求最小的循环节,直接用len-next[len] && next[len]!=0就行,对于len%(len-next[len])!=0要输出0.

    #include<stdio.h>
    #include<string.h>
    char s[1000006];
    int len,next[1000006];
    void nextt()
    {
    	int i,j;
    	i=0;j=-1;
    	memset(next,-1,sizeof(next));
    	while(i<len){
    		if(j==-1 || s[i]==s[j]){
    			i++;j++;next[i]=j;
    		}
    		else j=next[j];
    	}
    }
    
    int main()
    {
    	int n,m,i,j;
    	while(scanf("%s",s)!=EOF)
    	{
    		if(strcmp(s,".")==0)break;
    		len=strlen(s);
    		//printf("%d
    ",len);
    		nextt();
    		if(len%(len-next[len])==0 && next[len]!=0){
    			printf("%d
    ",len/(len-next[len]));
    		}
    		else printf("1
    ");
    	}
    }


  • 相关阅读:
    ANSYS文件读写
    ANSYS导出图片
    由面网格拉伸为体网格
    ANSYS由结点生成单元
    photoshop做gif图片的问题
    matlab输出没有白边的图片
    关于ANSYS绘图显示结果范围的问题
    ansys的建模基于的坐标系问题
    ANSYS分析轴对称问题
    ANSYS取消坐标轴显示,关闭局部坐标系
  • 原文地址:https://www.cnblogs.com/herumw/p/9464749.html
Copyright © 2011-2022 走看看