poj 2406 Power Strings,poj2406

來源:互聯網
上載者:User

poj 2406 Power Strings,poj2406
Power Strings

Time Limit: 3000MS   Memory Limit: 65536K
Total Submissions: 33636   Accepted: 13973

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

abcdaaaaababab.

Sample Output

14

3

題目大意:給出一個字串,求這個串是有幾個子串構成的思路:用KMP演算法中的next數組,這個字串的next數組裡邊,字串的總長度減去最後一個字元所對應的next值就是子串的長度具體為什麼,應該是next數組的值是根據這個字串本身,用一定規則得出的,這個真的好巧妙的說,kmp演算法,好好看看。2014,12,5

#include<stdio.h>#include<string.h>char x[1100000];int next[1100000];void getnext(char s[]){int len1,i,j;len1=strlen(s);i=0;j=-1;next[i]=j;while(i<len1){if(j==-1||s[i]==s[j]){++i;++j;next[i]=j;}else j=next[j];}}int main(){int t,len;while(scanf("%s",x)){getnext(x);if(x[0]=='.') break;else {len=strlen(x);t=len-next[len];if(len%t==0)printf("%d\n",len/t);else printf("1\n");}}return 0;}


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.