zp2177.cpp

来自「浙江大学acm在线判题器代码集。 本人在浙大acm判题器上的所有代码(心血) 」· C++ 代码 · 共 54 行

CPP
54
字号
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
#include <stdio.h>

int main(int argc, char* argv[])
{
  int n,i,j,next[1000010],cs=0;
  char st[1000010];
  while (scanf("%d",&n) && n)
  {
    scanf("%s",st);
    i=1;
    next[1]=0;
    j=0;
    while (i<=n)
      if (j==0 || st[i-1]==st[j-1])
      {
        i++;
        j++;
        next[i]=j;
      }
      else
        j=next[j];
/*
    for (i=1;i<=n;i++)
      printf("%d ",next[i]);
    printf("\n");
*/
    printf("Test case #%d\n",++cs);

    for (i=1;i<=n/2;i++)
    {
      for (j=2;i*j<=n;j++)
        if (next[i*j+1]==i*(j-1)+1)
          printf("%d %d\n",i*j,j);
        else
          break;
      if (j*i<=n)
        i*=j-1;
      else
        break;
    }
    printf("\n");
  }
  return 0;
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?