Seek the Name 题解

Seek the Name, Seek the Fame

https://ac.nowcoder.com/acm/contest/954/D

处理出,那么直接枚举前后缀长度check即可。复杂度
注意多组数据。

#include <algorithm>
#include <cstring>
#include <cstdio>
using namespace std;

#define N 400010
#define ull unsigned long long
#define base 233

ull h[N], p[N], ha;
char s[N];
int n;

int main() {
    p[0] = 1;
    for(int i = 1; i < 400000; ++i) p[i] = p[i - 1] * base;
    while(~scanf("%s", s + 1)) {
        n = strlen(s + 1);
        for(int i = 1; i <= n; ++i) h[i] = h[i - 1] * base + (ull)s[i];
        for(int i = 1; i <= n; ++i) {
            if(h[i] == h[n] - h[n - i] * p[i]) printf("%d ", i);
        }
        puts("");
    }
    return 0;
}
全部评论

相关推荐

04-02 16:49
门头沟学院 Java
_bloodstream_:我也面了科大讯飞,主管面的时候听说急招人优先考虑能尽快实习的,我说忙毕设,后面就一直没消息了
点赞 评论 收藏
分享
海螺很能干:每次看到这种简历都没工作我就觉得离谱
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务