CF B. Kolya and Tandem Repeat

CF B. Kolya and Tandem Repeat

大家好,又见面了,我是全栈君。

Kolya got string s for his birthday, the string consists of small English letters. He immediately added k more characters to the right of the string.

Then Borya came and said that the new string contained a tandem repeat of length l as a substring. How large could l be?

See notes for definition of a tandem repeat.

Input

The first line contains s (1 ≤ |s| ≤ 200). This string contains only small English letters. The second line contains number k (1 ≤ k ≤ 200) — the number of the added characters.

Output

Print a single number — the maximum length of the tandem repeat that could have occurred in the new string.

Sample test(s)

Input

aaba

2

Output

6

Input

aaabbbb

2

Output

6

Input

abracadabra

10

Output

20

Note

A tandem repeat of length 2n is string s, where for any position i (1 ≤ i ≤ n) the following condition fulfills: si = si + n.

In the first sample Kolya could obtain a string aabaab, in the second — aaabbbbbb, in the third — abracadabrabracadabra.

暴力枚举全部情况

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

char str[205];

int main(){
    int n;
    while(cin>>str>>n){
        int len = strlen(str);
        int L = len+n-(len+n)%2; //保证长度为偶数
        if(len <= n){
           cout<<L<<endl;
           continue;
        }
        int maxlen = 0;
        for(int i=0; i<len; i++){ //枚举起始位置
            for(int j=1; i+j-1<=len-1; j++){ //枚举一半的长度
                int cnt = 0;
            for(int k=i; k<=i+j-1; k++){ //推断
                if(len <= k+j && k+j < len+n) cnt++; //下标
                else if(str[k] == str[k+j]) cnt++;
            }
            if(cnt == j && 2*cnt > maxlen)
                maxlen = 2*cnt;
            }
        }
        cout<<maxlen<<endl;
    }
    return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115383.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 新手必看:PS修图的基本步骤

    新手必看:PS修图的基本步骤大家好我是微风,一个爱设计爱生活的平面设计师,最近总有一些朋友问我,PS修图的基本步骤是什么,怎么进行修图,那么今天的这篇文章主要给大家介绍下新手如何进行PS修图,PS修图基本步骤和精致修图基本步骤学习方法。一、ps修图基本步骤1.打开ps,处理图片;2.找到工具栏中的矩形选择选框;3.将第1步选作为选区,找到编辑功能中的填充;4.选择颜色为前景色;5.相同方法选中第2步选区,使用内容感知移动工具,将第2步选区向上移动;6.这样即可成功完成简易修图操作。二、精致修图基本步骤1、第一步——精

    2022年6月29日
  • 华硕笔记本 x550c 光驱位换固态硬盘

    华硕笔记本 x550c 光驱位换固态硬盘这两天给华硕笔记本(型号x550c)加装了个8G的内存条,并且给光驱位改装成了480G固态硬盘。内存条和固态硬盘都是在闲鱼上购买。加内存条内存条买的是海力士颗粒的8G1600Mhz,

    2022年7月2日
  • 鸿蒙3部曲先看哪部,星辰变是“鸿蒙”系列的作品,那“鸿蒙”系列到底有多少部曲?…

    鸿蒙3部曲先看哪部,星辰变是“鸿蒙”系列的作品,那“鸿蒙”系列到底有多少部曲?…说到《星辰变》,相信很多人都知道他的作者就是番茄吧?而番茄笔下最出名系列的小说,无疑就是“鸿蒙”系列了,其中《星辰变》就是“鸿蒙”系列中的一部作品。那“鸿蒙”系列小说到底有多少部曲呢?对此也有很多人有了这个疑问。原先的“鸿蒙三部曲”相信很多熟悉番茄小说的朋友都知道,原本番茄的《盘龙》《星辰变》《吞噬星空》被很多粉丝称之为“鸿蒙三部曲”。因为在《星辰变》的结局中我们也知道,鸿蒙创立了三个不同的世界,…

    2022年6月15日
  • Springboot 使用校验框架validation校验

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 作者:双斜杠少年 blog.csdn.net/u012373815/article/details/72049796…

    2021年6月25日
  • 怎么看是虚拟机还是物理机_虚拟机和真实机的区别

    怎么看是虚拟机还是物理机_虚拟机和真实机的区别如何判断当前主机是物理机还是虚拟机?

    2022年4月21日
  • leetcode 接雨水2_雨水口连接管

    leetcode 接雨水2_雨水口连接管题目链接给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例 1:输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。示例 2:输入:height = [4,2,0,3,2,5]输出:9 提示:n == height.length0 <= n &lt

    2022年8月8日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号