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

    Power Strings
    Time Limit: 3000MS   Memory Limit: 65536K
    Total Submissions: 39658   Accepted: 16530

    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
    

    Hint

    This problem has huge input, use scanf instead of cin to avoid time limit exceed.

    Source




    KMP算法

    设字符串的长度为l,假设l%(l-next[l])=0。该序列为循环序列,循环节长度为l-next[l],答案即为l/(l-next[l]);反之则不为循环序列。答案为1。




    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cstdlib>
    #include<cmath>
    #include<algorithm>
    #define F(i,j,n) for(int i=j;i<=n;i++)
    #define D(i,j,n) for(int i=j;i>=n;i--)
    #define ll long long
    #define pa pair<int,int>
    #define maxn 1000010
    #define inf 1000000000
    using namespace std;
    char s[maxn];
    int l,nxt[maxn];
    inline void getnext()
    {
    	int i=0,j=-1;
    	nxt[0]=-1;
    	while (i<l)
    	{
    		if (j==-1||s[i]==s[j]) nxt[++i]=++j;
    		else j=nxt[j];
    	}
    }
    int main()
    {
    	scanf("%s",s);
    	while (s[0]!='.')
    	{
    		l=strlen(s);
    		getnext();
    		if (l%(l-nxt[l])==0) printf("%d
    ",l/(l-nxt[l]));
    		else printf("1
    ");
    		scanf("%s",s);
    	}
    }
    


  • 相关阅读:
    Map根据key或者value排序
    docker部署Javaweb项目(jdk+tomcat+mysql)
    MySQL设置某一字段默认为0,但是插入数据化却显示为null
    文件下载
    JXLS导出Excel(模板导出)
    eclipse使用lombok
    Integer 类型数值判断相等的坑
    通用Mapper相关
    SSM配置Socket多线程编程(RFID签到实例)
    使用JSONObject遇到的问题,java.lang.NoClassDefFoundError: net/sf/json/JSONObject
  • 原文地址:https://www.cnblogs.com/claireyuancy/p/7079795.html
Copyright © 2011-2022 走看看