zoukankan      html  css  js  c++  java
  • hdu 1358 Period

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1358

    思路:Next数组的用法,在第i个位置上如果有i%(i-Next[i])==0的话最小循环节就是T[0~i],共有i/(i-Next[i])个循环节

    题意就是让从第二个位置开始找出有循环的位置节并输出循环节个数

     1 #include<cstdio>  
     2 #include<iostream>  
     3 #include<algorithm>
     4 #include<math.h> 
     5 #include<string.h>  
     6 #include<vector> 
     7 #include<queue>
     8 #include<iterator>
     9 #include<vector>
    10 #include<set>
    11 #define dinf 0x3f3f3f3f
    12 typedef long long ll;
    13 
    14 using namespace std;
    15 
    16 const int N = 100000005;
    17 int Next[N],tlen;
    18 char T[N];
    19 
    20 void getNext()
    21 {
    22     Next[1]=0;
    23     int i,j=0;
    24     for(i=2;i<=tlen;i++)
    25     {
    26         while(j>0&&T[j+1]!=T[i]) j=Next[j];
    27         if(T[j+1]==T[i]) j+=1;
    28         Next[i]=j;
    29     } 
    30 }
    31 
    32 int main()
    33 {
    34     int cas,t=1;
    35     while(scanf("%d",&tlen),tlen)
    36     {
    37         scanf("%s",T+1);
    38         getNext();
    39         printf("Test case #%d
    ",t++);
    40         for(int i=2;i<=tlen;i++)
    41         {
    42             if(Next[i]!=0 && i%(i-Next[i])==0)
    43                 printf("%d %d
    ",i,i/(i-Next[i]));
    44         }
    45         printf("
    ");
    46     }
    47     return 0;
    48 }
  • 相关阅读:
    python框架之Django(2)-简单的CRUD
    python框架之Django(1)-第一个Django项目
    实习进度13
    实习进度12
    实习进度11
    实习进度10
    学习进度08
    毕设进度07
    毕设进度06
    毕设进度05
  • 原文地址:https://www.cnblogs.com/pter/p/5718552.html
Copyright © 2011-2022 走看看