0
ababababababababababababababab
显然答案是 2。
被 Hack 提交记录
被 Hack 代码
#include<iostream>
#include<string.h>
#include<vector>
#include<algorithm>
using namespace std;
const int maxn=5000005;
int n,k;
char s[maxn];
bool check(int len){
int val=0;
for(int i=1;i<=len;i++){
int ch[27]={0},maxx=0;
for(int j=1;j<=n/len;j++){
ch[s[(j-1)*len+i]-'a']++;
}
for(int j=0;j<=26;j++){
maxx=max(maxx,ch[j]);
}
val+=n/len-maxx;
if(val>k)return false;
}
return true;
}
vector<int>len;
int main(){
scanf("%d%s",&k,s+1);
n=strlen(s+1);
for(int i=1;i*i<=n;i++){
if(n%i!=0)continue;
len.push_back(i);
len.push_back(n/i);
}
sort(len.begin(),len.end());
int ans,l=0,r=len.size()-1;
while(l<=r){
int mid=(l+r)/2;
bool res=check(len[mid]);
if(res)ans=mid,r=mid-1;
else l=mid+1;
}
printf("%d",len[ans]);
return 0;
}