zoukankan      html  css  js  c++  java
  • POJ 2406

    Time Limit: 3000MS   Memory Limit: 65536KB   64bit IO Format: %I64d & %I64u

     Status

    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.

    ________________________________________________________________________________________________________________________

    题目大意:给定字符串,问字符串由几个相同的部分组成?

    if(字符串长度%(字符串长度-字符串最后一个字符的next[])==0),相同部分的长度为:字符串长度-字符串最后一个字符的next[]

    在做这个题目时处理低级失误,把长度L定义成了char,找了一个多小时,哎……,笨的要死了!

    ________________________________________________________________________________________________________________________

     1 #include<cstdio>
     2 #include<cstring>
     3 
     4 using namespace std;
     5 const int maxl=1000010;
     6 char s[maxl];
     7 int next[maxl],l;
     8 void getnext()
     9 {
    10     next[0]=-1;
    11     for(int j,i=1;i<l;i++)
    12     {
    13         j=next[i-1];
    14         while(s[j+1]!=s[i] && j>=0)j=next[j];
    15         next[i]=s[j+1]==s[i]?j+1:-1;
    16     }
    17 }
    18 int main()
    19 {
    20     while(~scanf("%s",s) )
    21     {
    22         if(s[0]=='.')break;
    23         l=strlen(s);
    24         getnext();
    25         if(l%(l-next[l-1]-1)==0)printf("%d
    ",l/(l-next[l-1]-1));
    26         else printf("1
    ");
    27     }
    28     return 0;
    29 }
    View Code
  • 相关阅读:
    E230的Android历程
    Web.config
    程序集和命名空间 转载
    CSS 得到图片 为什么是负 值。
    JQUERY中 GET与POST方法的区别 Request.QueryString Request.Form区别
    JS中scrollLeft(right,top,bottom)的用法和特点
    ashx是什么文件
    自己写了个 logO图片上 显示问题则CSS样式。CSS可是真强大啊。
    jquery + ashx DropDownList 二级
    CSS与超链接<a><A>的恩怨情仇。。。
  • 原文地址:https://www.cnblogs.com/gryzy/p/6531340.html
Copyright © 2011-2022 走看看