zoukankan      html  css  js  c++  java
  • Power Strings 分类: POJ 串 2015-07-31 19:05 8人阅读 评论(0) 收藏

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

    Status

    Practice

    POJ 2406
    Appoint description:
    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.
    开始的时候数组开了,orz

    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <cmath>
    #include <queue>
    #include <stack>
    #include <map>
    #include <list>
    #include <algorithm>
    #define RR freopen("output.txt","r",stdoin)
    #define WW freopen("input.txt","w",stdout)
    typedef long long LL;
    
    using namespace std;
    
    const int MAX = 1000010;
    
    char s[MAX];
    
    int next[MAX];
    
    int len;
    
    void Build_next()
    {
        int i=0,j=-1;
        len=strlen(s);
        next[0]=-1;
        while(i<len)
        {
            if(j==-1||s[i]==s[j])
            {
                i++;
                j++;
                next[i]=j;
            }
            else
            {
                j=next[j];
            }
        }
    }
    
    int main()
    {
        while(scanf("%s",s)&&strcmp(s,"."))
        {
            Build_next();
            int ans=len-next[len];
            if(len%ans)
            {
                printf("1
    ");
            }
            else
            {
                printf("%d
    ",len/ans);
            }
        }
        return 0;
    }
    

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    Redis扩展功能
    Redis持久化
    redis-通讯协议及事件处理机制
    Redis-数据类型与底层数据结构
    分布式集群架构场景化解决方案
    MySQL-运维和第三方工具
    缓存原理&设计
    MySQL性能优化
    MySQL高级-日志常用的工具等等
    Mysql高级——优化
  • 原文地址:https://www.cnblogs.com/juechen/p/4721948.html
Copyright © 2011-2022 走看看