#include <iostream>
#include <algorithm>
#include <string.h>
#include <cstdio>
#include <vector>
using namespace std;
const int maxn=;
int MinRepresstation(char * S, int len ) {
int i = , j = , k = ;
while(i < len && j < len)
{
k = ;
while(k < len && S[(i + k)%len] == S[(j + k)%len])
k++;
if(k >= len)
break;
if(S[(i + k)%len] > S[(j + k)%len])
i = max(i + k + , j + );
else
j = max(i + , j + k + );
}
return min(i ,j);
}
int MaxRepresstation(char * S, int len ) {
int i = , j = , k = ;
while(i < len && j < len)
{
k = ;
while(k < len && S[(i + k)%len] == S[(j + k)%len])
k++;
if(k >= len)
break;
if(S[(i + k)%len] > S[(j + k)%len])
j = max(i + , j + k + );
else
i = max(i + k + , j + );
}
return min(i ,j);
}
char s[maxn];
char s1[maxn],s2[maxn];
void getFail(char *P, int *f, int m)
{
f[]=; f[]=;
for(int i=; i<m; i++)
{
int j=f[i];
while(j&&P[i]!=P[j])j=f[j];
f[i+]=P[i]==P[j]?j+:;
}
}
int find(char *T,char *P, int *f,int n, int m)
{
getFail(P,f,m);
int j=;
int num=;
for(int i=; i<n-; i++)
{
while(j&&P[j]!=T[i])j=f[j];
if(P[j]==T[i])j++;
if(j==m){
num++; j=f[j];
}
}
return num;
}
int F[maxn]; int main()
{ while(gets(s))
{ int len=strlen(s);
int d1=MinRepresstation(s,len);
int d2=MaxRepresstation(s,len);
for(int i = ; i < len ; i ++)
s[ i + len ] = s[ i ];
for(int i=; i<len; i++)
{
s1[i]=s[(i+d1)%len];
s2[i]=s[(i+d2)%len];
}
int ans1=find(s,s1,F,len*,len);
int ans2=find(s,s2,F,len*,len);
printf("%d %d %d %d\n",d1+,ans1,d2+,ans2);
} return ;
}

最新文章

  1. js类型转换
  2. css样式
  3. NK3C系统中ID的汉语名称
  4. 新版WampServer项目路径前面没有localhost
  5. 20145320《Java程序设计》第4周学习总结
  6. Delphi 打印
  7. source command not found in sh shell解决办法
  8. BZOJ 2463: [中山市选2009]谁能赢呢?[智慧]
  9. C/C++语言简介之语法结构
  10. NodeJS Addon 多线程通信
  11. Python学习过程中各个难点---数据类型篇
  12. mysql数据库可以远程连接或者说用IP地址可以访问
  13. Java学习笔记11(this,super)
  14. Top 10 Best Free Netflow Analyzers and Collectors for Windows
  15. C++中的也能使用正则表达式----转载
  16. 修改IP
  17. 排序算法之堆排序(Heapsort)解析
  18. Activity的setResult方法
  19. LoadRunner FAQ
  20. Asp.Net MVC Identity 2.2.1 使用技巧(七)

热门文章

  1. 第一版STM32PCB的问题
  2. Appium入门(5)__ Appium测试用例(1)
  3. 批量查询&quot;_mget&quot;
  4. Spring Security 4.2.3 Filters 解析
  5. dedecms批量修改文章为待审核稿件怎么操作
  6. 微信公众号ID也可以修改了!
  7. arcgis api for javascript 距离与面积量算
  8. IE8“开发人员工具”(上)
  9. Sublime Text 许可证
  10. 以太坊nonce