题目地址:http://poj.org/problem?id=2406

题目:


求字符串是由多少个重复的子串组成的

解题思路:


kmp解法见:https://blog.csdn.net/Cassie_zkq/article/details/81665153

求出字符串的hash数组,从小到大枚举长度,和原字符串匹配,符合条件就输出。

ac代码:


#include <cmath>
#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <vector>
#include <algorithm>
#include <stack>
#include <queue>
using namespace std;
typedef unsigned long long ll;
const ll maxn = 1000005;
ll p = 233333,len = 0;
char s[maxn];
ll has[maxn], power[maxn];
void init()//预处理p^n
{power[0] = 1;for(int  i = 1; i < maxn; i++)power[i] = power[i - 1] * p;
}
bool judge(int st)
{for(int i = st * 2; i <= len; i += st){ll tmp = has[i] - has[i - st] * power[st];if(tmp != has[st]) return false;}return true;
}
int main ()
{//freopen("/Users/zhangkanqi/Desktop/11.txt","r",stdin);init();while(scanf("%s",s+1)){if(s[1] == '.') break;len = strlen(s + 1);has[0] = 0;for(int i = 1; i <= len; i++)has[i] = has[i - 1] * p + (ll)(s[i] - 'a' + 1);for(int i = 1; i <= len ; i++){if(len % i == 0 && judge(i)){printf("%llu\n", len / i);break;}}}return 0;
}

【POJ2406】Power Strings(hash/kmp)相关推荐

  1. 【POJ2406】Power Strings(KMP)

    problem 求每个字符串的最短循环子串,输出循环次数 solution 任何一个字符串的[1,Next[n]]与[n-Next[n],n]一定是匹配的. 那么如果n%(n-Next[n])==0, ...

  2. 【bzoj1251】序列终结者(伸展树)

    [bzoj1251]序列终结者(伸展树) Description 网上有许多题,就是给定一个序列,要你支持几种操作:A.B.C.D.一看另一道题,又是一个序列 要支持几种操作:D.C.B.A.尤其是我 ...

  3. 【BZOJ4405】【WC2016】挑战NPC(带花树)

    [BZOJ4405][WC2016]挑战NPC(带花树) 题面 BZOJ 洛谷 Uoj Description 小N最近在研究NP完全问题,小O看小N研究得热火朝天,便给他出了一道这样的题目: 有n个 ...

  4. luogu P3808 【模板】AC自动机(简单版)

    二次联通门 : luogu P3808 [模板]AC自动机(简单版) /*luogu P3808 [模板]AC自动机(简单版)手速越来越快了10分钟一个AC自动机一遍过编译 + 一边AC感觉不错我也就 ...

  5. 【BZOJ4004】装备购买(线性基)

    [BZOJ4004]装备购买(线性基) 题面 BZOJ 洛谷 Description 脸哥最近在玩一款神奇的游戏,这个游戏里有 n 件装备,每件装备有 m 个属性,用向量zi(aj ,.....,am ...

  6. 【BZOJ5213】[ZJOI2018]迷宫(神仙题)

    [BZOJ5213][ZJOI2018]迷宫(神仙题) 题面 BZOJ 洛谷 题解 首先可以很容易的得到一个\(K\)个点的答案. 构建\(K\)个点分别表示\(mod\ K\)的余数.那么点\(i\ ...

  7. 【matlab】三维曲面(矩形网格---meshgrid)

    [matlab]三维曲面(矩形网格-meshgrid) 二维曲线: 先找到x,找到对应的y,绘制点. >> x=1:2*pi; >> y=sin(x); >> pl ...

  8. 【机器学习】因子分解机(Factorization Machine)原理与java实现

    [机器学习]因子分解机(Factorization Machine)原理与java实现 1.因子分解机原理 1.1.分离超平面 1.2.阈值函数 1.3.样本概率 1.4.损失函数 1.5.随机梯度下 ...

  9. 【音频】削波失真(爆音)问题定位与解决

    [音频]削波失真(爆音)问题定位与解决 Why:为什么要解决削波失真问题? What:什么是削波失真,如何定位 用户反馈的现象 音频异常环节定位 音频异常是发生在音频处理的哪个环节? 不同的音频采集方 ...

  10. 【CF833D】Red-Black Cobweb(点分治)

    [CF833D]Red-Black Cobweb(点分治) 题面 CF 有一棵树,每条边有一个颜色(黑白)和一个权值,定义一条路径是好的,当且仅当这条路径上所有边的黑白颜色个数a,b满足2min(a, ...

最新文章

  1. Centos环境下实现DNS的智能解析
  2. 华为云查询弹性云服务器规格信息,通用计算型弹性云服务器规格介绍详情-华为云...
  3. word2vec原理_深入理解Word2Vec底层原理
  4. 计算机不定时黑屏,联想一体机电脑不定时黑屏是怎么回事?
  5. 04737 c++ 自学考试2019版 第二章课后程序设计题 3
  6. 一个表格,一部分允许编辑,有公式的单元格不允许编辑
  7. 解决百度 ueditor v1.4.3 编辑器上传图片失真的bug?
  8. Linux中的常用命令
  9. wpf之通过MVVM绑定MouseEnter
  10. Hadoop高级培训课程大纲-开发者版
  11. 目前主流的app制作方法有哪些?
  12. 小米平板2刷android,小米平板2怎么刷回MIUI 小米平板2刷回MIUI教程
  13. html的link标签
  14. 重新排列数组的数,使得负数都排在正数的前面
  15. C++中关于数据小数点,取整的方法
  16. AAC音频文件添加ADTS头
  17. 第一次学习计划(含用pytorch跑通mnist例子)
  18. 小心!除了植入木马,你的充电宝可能还在窃听你,受害人遍布全国
  19. JS树结构操作:查找、遍历、筛选、树结构和列表结构相互转换
  20. 顺顺网页电子表格控件开源下载

热门文章

  1. 【JavaEE】第一章线程和多线程
  2. Unity的包体压缩以及音效优化
  3. 2580 php to yuan,PHP版汉字转拼音类-ASCII版本 | 学步园
  4. Redlock(redis 分布式锁)原理分析
  5. linux下修改mysql数据存储_Linux下修改MySQL数据存放目录方法及可能遇到的问题--转...
  6. 用计算机控制人造卫星和导弹发射,广西成人高校计算机实用基础统考理论试题(...
  7. 布局篇(1)—If you love css …
  8. Android Studio第三十六期 - 模块化Activity管理Fragment
  9. NodeJS stream 一:Buffer
  10. JavaScript_高程三_01