2 条题解

  • 0
    @ 2025-10-8 16:52:20
    #include <bits/stdc++.h>
    using namespace std;
    const int N = 1110000;
    char s[N];
    int pre[N];
    int main()
    {
        while (scanf("%s", s + 1) != EOF)
        {
            int len = strlen(s + 1);
            if (len == 1 && s[1] == '.') break;
            memset(pre, 0, sizeof(pre));
            for (int i = 1, j = pre[i]; i < len; i++, j = pre[i])
            {
                while (j > 0 && s[i + 1] != s[j + 1]) j = pre[j];
                if (s[i + 1] == s[j + 1]) pre[i + 1] = j + 1;
            }
            if (len % (len - pre[len]) == 0) printf("%d\n", len / (len - pre[len]));
            else printf("1\n");
        }
        return 0;
    }
    
    • 0
      @ 2025-10-8 16:52:10
      #include<bits/stdc++.h>
      using namespace std;
      const int N=1110000;
      char s[N];
      int pre[N];
      int main()
      {
          while(scanf("%s",s+1)!=EOF)
          {
              int len=strlen(s+1);
              if(len==1 && s[1]=='.')break;
              memset(pre,0,sizeof(pre));
              for(int i=1,j=pre[i];i<len;i++,j=pre[i])
              {
                  while(j>0&&s[i+1]!=s[j+1])j=pre[j];
                  if(s[i+1]==s[j+1])pre[i+1]=j+1;
              }
              if(len%(len-pre[len])==0)printf("%d\n",len/(len-pre[len]));
              else printf("1\n");
          }
          return 0;
      } 
      • 1

      信息

      ID
      573
      时间
      1000ms
      内存
      128MiB
      难度
      5
      标签
      递交数
      120
      已通过
      46
      上传者