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
  • 相关阅读:
    分享jQuery的常用技巧12招
    浅析淘宝数据魔方技术架构
    JavaScript的跨域共享的方法
    PHP实现QQ达人信息抓取
    Dreamweaver CS5.5试用小感和破解方法附下载地址
    ExtJS 4应用架构设计
    webkit webApp 开发技术要点总结
    用delphi编写ISAPI过滤器
    1020卡免费共享测试!
    一些有用的網站
  • 原文地址:https://www.cnblogs.com/gryzy/p/6531340.html
Copyright © 2011-2022 走看看