最小循环表示

来源:互联网 发布:java求3个最小公倍数 编辑:程序博客网 时间:2024/06/05 14:18
#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#include<cmath>#include<algorithm>#include<vector>#include<stack>#include<queue>#include<map>#define RG register#define IL inline#define pi acos(-1.0)#define ll long long using namespace std;int gi() {  char ch=getchar(); int x=0;  while(ch<'0' || ch>'9') ch=getchar();  while(ch>='0' && ch<='9') {x=10*x+ch-'0';ch=getchar();}  return x;}int n,ans;char s1[100001];int min_rep(char *s, int l) {  int i=0 ,j=1,k=0;  while(i<l && j<l && k<l) {    if(s[i+k]==s[j+k]) k++;    else {      if(s[i+k]<s[j+k]) j+=k+1;      else i+=k+1;      k=0;      if(i==j) k++;    }  }  return min(i,j);}int main() {  scanf("%s", s1);  n=strlen(s1);  ans=min_rep(s1,n);  printf("%d", ans);  return 0;}