程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> POJ2406:Power Strings

POJ2406:Power Strings

編輯:C++入門知識

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     [cpp]   #include<iostream>   #include <cstdio>   #include <cstdlib>   #include <cstring>   using namespace std;      char str [1000010];         int  next[1000010];      int getnext()   {       int i=0,j=-1,len;       next[0]=-1;       while(str[i])       {           if(j==-1||str[i]==str[j])           {               i++;               j++;               next[i]=j;           }           else              j=next[j];       }       len=strlen(str);       i=len-j;       if(len%i==0)            return len/i;       else            return 1;   }   int main()   {       while( gets( str), str[0]!= '.' )       printf("%d\n", getnext() );       return 0;   }  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved