[AcWing 777] 字符串乘方

点击查看代码
#include<iostream>
using namespace std;
string str;
int main()
{
while (cin >> str, str != ".") {
int len = str.size();
for (int n = len; n; n--)
if (len % n ==0) {
int m = len / n;
string s = str.substr(0, m);
string r;
for (int i = 0; i < n; i++) r += s;
if (r == str) {
cout << n << endl;
break;
}
}
}
return 0;
}
- 找到一个最短的子串,使得 n 个子串拼接之后和原字符串相等
- 定义 len 为原字符串的长度,m 为子串的长度,n 为乘方的指数(是由几个子串拼接)
- 枚举 n, 从 len 开始,只要子串满足条件就 break(因为此时的 n 是最大的)
- 如果子串满足条件,子串必是原字符串从 0 到 m 的那段字符串,只需要把这段字符串重复 n 次,拼接成一个新串,判断新串和原串是否相等即可
[AcWing 777] 字符串乘方的更多相关文章
- AcWing 841. 字符串哈希
//快速判断两次字符串是不是相等 #include<bits/stdc++.h> using namespace std ; typedef unsigned long long ULL; ...
- [AcWing 776] 字符串移位包含问题
点击查看代码 #include<iostream> #include<algorithm> using namespace std; string a, b; int main ...
- [AcWing 771] 字符串中最长的连续出现的字符
点击查看代码 #include<iostream> using namespace std; string str; int n; int main() { cin >> n; ...
- 【题解】AcWing 193. 算乘方的牛
原题链接 题目描述 约翰的奶牛希望能够非常快速地计算一个数字的整数幂P(1 <= P <= 20,000)是多少,这需要你的帮助. 在它们计算得到最终结果的过程中只能保留两个工作变量用于中 ...
- [AcWing 778] 字符串最大跨距
点击查看代码 #include<iostream> using namespace std; string s, s1, s2; int main() { char c; while (c ...
- 理解JS回调函数
我们经常会用到客户端与Web项目结合开发的需求,那么这样就会涉及到在客户端执行前台动态脚本函数,也就是函数回调,本文举例来说明回调函数的过程. 首先创建了一个Web项目,很简单的一个页面,只有一个bu ...
- acwing 835. Trie字符串统计
地址 https://www.acwing.com/problem/content/description/837/ 维护一个字符串集合,支持两种操作: “I x”向集合中插入一个字符串x: “Q ...
- Java实现 LeetCode 777 在LR字符串中交换相邻字符(分析题)
777. 在LR字符串中交换相邻字符 在一个由 'L' , 'R' 和 'X' 三个字符组成的字符串(例如"RXXLRXRXL")中进行移动操作.一次移动操作指用一个"L ...
- AcWing:139. 回文子串的最大长度(字符串Hash + 前缀和 + 后缀和 + 二分)
如果一个字符串正着读和倒着读是一样的,则称它是回文的. 给定一个长度为N的字符串S,求他的最长回文子串的长度是多少. 输入格式 输入将包含最多30个测试用例,每个测试用例占一行,以最多1000000个 ...
随机推荐
- 解决Idea.exe无法启动问题(idea2017.3版本)
问题: 最近在用idea时,突然弹出了以下消息框(图片不是我的): 将Xmx的值调大以后,idea还是闪退了.并且再点击idea.exe时,idea已经木有反映了,无法启动. 解决方案: 方案一(失败 ...
- Json有什么作用?
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 它基于JavaScript(Standard ECMA-262 3rd Edition - Decemb ...
- Dubbo 和 Dubbox 之间的区别?
Dubbox 是继 Dubbo 停止维护后,当当网基于 Dubbo 做的一个扩展项目,如 加了服务可 Restful 调用,更新了开源组件等.
- Elasticsearch 在部署时,对 Linux 的设置有哪些优化方 法?
1.64 GB 内存的机器是非常理想的, 但是 32 GB 和 16 GB 机器也是很常见的. 少于 8 GB 会适得其反. 2.如果你要在更快的 CPUs 和更多的核心之间选择,选择更多的核心更好. ...
- 学习Apache(五)
apache目前主要有两种模式:prefork模式和worker模式: 1)prefork模式(默认模式) prefork是Unix平台上的默认(缺省)MPM,使用多个子进程,每个子进程只有一个线程 ...
- spring @Bean和@Order 官方doc理解
今天阅读了spring的官方代码,(大概)理解了@Bean和@Order如何使用. @Bean 官方代码解读: 0.@Bean的注入,用于表示这个bean被spring容器管理(创建.销毁)(官方英文 ...
- Python - 函数的五大参数
Python的函数参数挺重要的,总结一下: (1)位置参数:没啥好说的,就是普通的参数. (2)默认参数: 参数形式:def power(x, n = 3): (在函数定义时通过对一个形参赋值的形式, ...
- c/c++中的i++和++i的区别
使用 i++ vs. ++i i++是先赋值再加1 ++i是先加1再赋值 到目前为止,你已经学习了如何编写下面这样的 C++ for 循环: for (int i = 0; i < 10; i+ ...
- Graphics 与 DisplayObject 的关系
在原生 Canvas 中,其实并没有 DisplayObject 的概念,它只有绘制图像的概念. 大部分的原生绘制图形或图像的 API 一般是这样的: api(x, y, ...) 例如 rect 就 ...
- JDK卸载和彻底删除
第一步:点击"控制面板". 第二步:点击"卸载程序". 第三步:进入到"程序和功能"界面,找到jdk的两个程序:①java 8 update ...