B4119 题解
考虑暴力模拟,枚举
暴力代码就不给了。
众所周知一个 border 等价于一个周期,所以我们处理出
const int N=1e6+10;
int n,T;
char s[N];
int ne[N];
void main(){
n=R;
scanf("%s",s+1);
for(int i=2,j=0;i<=n;i++)
{
while(j&&s[i]!=s[j+1]) j=ne[j];
if(s[i]==s[j+1]) j++;
ne[i]=j;
}
if(n%(n-ne[n])==0&&ne[n]!=0) puts("Yes");
else puts("No");
}