acwing 141. 周期

简介: acwing 141. 周期

141. 周期 - AcWing题库

#include<iostream>
#include<algorithm>
#include<cstring>
 
using namespace std ;
const int N = 1e6 +10 ;
int n , m ;
char s[N] ;
int ne[N] ;
void get_ne(){
  memset(ne,0,sizeof(ne)) ;
  for(int i = 2 , j = 0 ; i <= n ; i ++){
    while(j && s[i] != s[j+1]) j = ne[j] ;
    if(s[i] == s[j+1]) j ++ ;
    ne[i] = j ; 
  }
  
}
int main(){
  int t = 0 ;
  while(cin >> n , n ){
    cin >> s+ 1;
    get_ne() ;
    printf("Test case #%d\n",++t) ;
    for(int i = 2 ; i <=n ;i ++){
      if(i %(i-ne[i]) == 0 && i /(i-ne[i]) > 1)
        printf("%d %d\n",i , i /(i-ne[i])) ;
    }
    cout << endl ;
  }
}
目录
相关文章
|
7月前
|
JavaScript 测试技术
【动态规划】【精度】1883. 准时抵达会议现场的最小跳过休息次数
【动态规划】【精度】1883. 准时抵达会议现场的最小跳过休息次数
AcWing 3498. 日期差值(每日一题)
AcWing 3498. 日期差值(每日一题)
【AcWing每日一题】3400. 统计次数
【AcWing每日一题】3400. 统计次数
63 0
|
算法
《蓝桥杯每日一题》KMP算法·AcWing 141. 周期
《蓝桥杯每日一题》KMP算法·AcWing 141. 周期
136 0
【leetcode每日一题】1027. 最长等差数列
【leetcode每日一题】1027. 最长等差数列
【寒假每日一题】AcWing 3400. 统计次数(补)
目录 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解
55 0
|
人工智能 算法 测试技术
【寒假每日一题】AcWing 4644. 求和(补)
目录 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解
86 0
leetcode每日一题:746. 使用最小花费爬楼梯
leetcode每日一题:746. 使用最小花费爬楼梯
|
测试技术
【寒假每日一题】AcWing 4653. 数位排序(补)
目录 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 三、知识风暴 关于pair
103 0
|
算法
【蓝桥杯集训·每日一题】AcWing 141. 周期
文章目录 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 三、知识风暴 KMP算法
89 0