题目链接:HDU 3746

Sample Input
1 | 3 |
Sample Output
1 | 0 |
Author
possessor WC
Source
Solution
题意
给定一个字符串,问至少需要在末尾添加多少个字符使得字符串循环。
思路
KMP
设前缀函数为 $\pi()$,字符串长度为 $n$,下标从 $1$ 开始。
最小循环节为 $k = n - \pi(n)$。
如果 $n \% k=0$,那么字符串已经循环。
否则还需要添加 $k - n \% k$ 个字符。
Code
1 |
|
题目链接:HDU 3746

1 | 3 |
1 | 0 |
possessor WC
给定一个字符串,问至少需要在末尾添加多少个字符使得字符串循环。
KMP
设前缀函数为 $\pi()$,字符串长度为 $n$,下标从 $1$ 开始。
最小循环节为 $k = n - \pi(n)$。
如果 $n \% k=0$,那么字符串已经循环。
否则还需要添加 $k - n \% k$ 个字符。
1 | #include <bits/stdc++.h> |
欢迎关注我的其它发布渠道