码迷,mamicode.com
首页 > 其他好文 > 详细

HDU - 1358 Period

时间:2018-04-27 02:27:10      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:next   lse   std   cas   def   name   sync   ==   size   

 1 #include <iostream>
 2 #include <algorithm>
 3 #define MaxSize 1000010
 4 using namespace std;
 5 
 6 char s[MaxSize];
 7 int Next[MaxSize];
 8 int Len;
 9 
10 void GetNext()
11 {
12     int i = 0, j = Next[0] = -1;
13     while (i < Len)
14     {
15         if (j == -1 || s[i] == s[j])
16             Next[++i] = ++j;
17         else
18             j = Next[j];
19     }
20 }
21 
22 int main()
23 {
24     ios::sync_with_stdio(false);
25     int cas = 0;
26     while (true)
27     {
28         cin >> Len;
29         if (Len == 0)
30             break;
31         cin >> s;
32         cas++;
33         GetNext();
34         cout << "Test case #" << cas << endl;
35         for (int i = 1; i <= Len; ++i)
36         {
37             int circle = i - Next[i];
38             if (Next[i] == 0)
39                 continue;
40             if (i % circle == 0)
41                 cout << i <<   << i / circle << endl;
42         }
43         cout << endl;
44     }
45 
46     return 0;
47 }

 

HDU - 1358 Period

标签:next   lse   std   cas   def   name   sync   ==   size   

原文地址:https://www.cnblogs.com/ducklu/p/8955717.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!