CF1950E.Nearly Shortest Repeating Substring

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

给定一个长度为 nn 的字符串 ss,该字符串仅由小写拉丁字母组成。请你找到最短字符串 kk 的长度,使得可以将若干个(可能只需一个)kk 拼接起来,得到一个与 ss 长度相同的新字符串 cc,并且 cc 与 ss 至多只有一个字符不同。

更正式地说,要求找到最短的 kk,使得存在正整数 xx,满足 c=k+⋯+k⏟x 次c = \underbrace{k + \cdots + k}_{x\text{ 次}},且 ss 和 cc 长度相同,并且 ci≠sic_i \neq s_i 的位置最多只有一个(即最多有 00 或 11 个这样的下标 ii)。

输入格式

第一行包含一个整数 tt(1≤t≤1031 \leq t \leq 10^3),表示测试用例的数量。

每个测试用例的第一行包含一个整数 nn(1≤n≤2⋅1051 \leq n \leq 2\cdot10^5),表示字符串 ss 的长度。

每个测试用例的第二行包含一个仅由小写拉丁字母组成的字符串 ss。

所有测试用例中 nn 的总和不超过 2⋅1052\cdot10^5。

输出格式

对于每个测试用例,输出满足题意的最短字符串 kk 的长度。

输入输出样例

  • 输入#1

    5
    4
    abaa
    4
    abba
    13
    slavicgslavic
    8
    hshahaha
    20
    stormflamestornflame

    输出#1

    1
    4
    13
    2
    10

说明/提示

在第一个测试用例中,可以选择 k=ak = \texttt{a},此时 k+k+k+k=aaaak+k+k+k = \texttt{aaaa},与 ss 只在第二个位置不同。

在第二个测试用例中,不能选择长度为 11 或 22 的 kk。可以选择 k=abbak = \texttt{abba},此时 kk 等于 ss。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页