11 条题解

  • 4
    @ 2023-10-6 20:16:53

    周期串问题 我们可以设置循环从1开始假设周期(周期一定能被字符串长度整除) 再用循环判断 如为真 就跳出循环 输出周期 如为假 则变量加1 再次进行如上判断 若到循环结束依然无法判断 则该字符串长度便为周期

    • 2
      @ 2025-9-15 8:36:27

      #include <stdio.h> int main() {

      int n,i=1,t,c;
      char a[1001];
      scanf("%d",&n);
      scanf("%s",a);
      while(i<n)
      {
          t=0;
          while(t<=i)
          {   if(a[t]!=a[n-1-i+t])
              {c=0;i++;break;}
              else c=1;
              t++;}
          if(c==1)
          {printf("%d",t);break;}
      }
      return 0;
      

      }

      • 1
        @ 2025-12-11 11:03:58

        `

        #include <stdio.h>
        int main(){
            int n;
            scanf ("%d",&n);
            int min=n;
            char a[1005];
            scanf ("%s",a);
            for (int i=1;i<=n/2;i++){
                if (n%i!=0){
                    continue;
                }
                int m=1;
                for (int j=0;j<n;j++){
                    if (a[j]!=a[j%i]){
                        m=0;
                        break;
                    }
                }
                if (m){
                    min=i;
                    break;
                }
            }
            printf ("%d",min);
            return 0;
        }
        ``` `
        
        • 1
          @ 2024-4-24 22:30:07
          #include <stdio.h>
          int main()
          {
              
              int n,i=1,t,c;
              char a[1001];
              scanf("%d",&n);
              scanf("%s",&a);
              while(i<n)
              {
                  t=0;
                  while(t<=i)
                  {
                      if(a[t]!=a[n-1-i+t]){c=0;i++;break;}
                      else c=1;
                      t++;
                  }
                  if(c==1){printf("%d",t);break;}
          
              }
              
              return 0;
          }
          //
          
          • 0
            @ 2025-11-16 17:16:46
            #include<stdio.h>
            int main()
            {
               int n;
               scanf("%d",&n);
               char str[1001];
               scanf("%s",str);
               for(int i=1;i<=n;i++)
               {
                  if(n%i!=0)
                  {
                     continue;
                  }
                  int flag=0;
                  for(int j=1;j<n/i;j++)//控制行数
                  {
                     for(int k=0;k<i;k++)//重复字符
                     {
                        if(str[k]!=str[j*i+k])//规律
                        {
                            flag=1;
                            break;
                        }
                     }
                 
                     if(flag)
                     {
                        break;
                     }
                 }
                     if(!flag)
                     {
                        printf("%d",i);
                        return 0;
                     }
                  
              }
              printf("%d",n);
               return 0;
            }
            
            • 0
              @ 2025-1-14 22:34:29

              简单暴力,不必多言

              #include <iostream>
              #include <vector>
              using namespace std;
              int main(){
                  ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
                  int n;
                  cin >> n;
                  string s;
                  cin >> s;
                  for(int i = 1 ; i <= n ; i++){
                      if(n % i == 0){
                          string ss = "";
                          for(int j = 1 ; j <= i ; j++){
                              ss += s[j - 1];
                          }
                          string p = "";
                          int x = n / i;
                          while(x--){
                              p += ss;
                          }
                          if(p == s){
                              cout << i;
                              break;
                          }
                      }
                  }
                  return 0;
              }
              
              • 0
                @ 2024-9-27 17:57:38
                #include <bits/stdc++.h>
                using namespace std;
                int main(){
                	int n; scanf("%d", &n);
                	char s[n + 2]; scanf("%s", s + 1);
                	for(int i = 1;i <= n;i ++){
                		if(n % i != 0) continue;
                		int f = 1;
                		for(int j = 1;j <= n / i; j ++){
                			for(int k = 1;k <= i; k ++){
                				if(s[k] != s[k + (j - 1) * i]){
                					f = 0; break;
                				}
                			}
                			if(f == 0) break;
                		}
                		if(f){
                			printf("%d", i); return 0;
                		}
                	}
                }
                
                • 0
                  @ 2023-9-5 11:32:49
                  #include<stdio.h>
                  int main()
                  {
                  	int m=0,n=1000,x=0;
                  	int min=m+1;
                  	scanf("%d",&n);
                  	char ch[min+n+5];
                  	scanf("%s",ch);//1234123
                  	for(;;)
                  	{
                  		int i=x+min;
                  		while(i<n)
                  		{
                  			if(ch[x]==ch[i])
                  			i+=min;
                  			else
                  			{
                  			min+=1;
                  			i=min;
                  			}
                  		}//23323323
                  		if(x+1<min)
                  		{
                  			x++;
                  			continue;
                  		}
                  		else if(n%min!=0)
                  		{
                  			printf("%d",n);
                  			break;
                  		}
                  		else if(ch[min-1]==ch[n-1])
                  		{
                  			printf("%d",min);
                  			break;
                  		}
                  		
                  	}
                  	return 0;
                  }
                  
                  • -1
                    @ 2024-8-3 13:18:55

                    指针

                    #include<iostream> #include<string> using namespace std;

                    int main() { int n; string s; cin >> n; while(n--) { char c; cin >> c; s += c; } size_t i = 0 , j = 0 , pos_1 = 0 , pos_2 = 1; while(pos_2 < s.size()) { if(s[pos_1] == s[pos_2]) { if(pos_1 != j) { pos_1++,pos_2++; } else { pos_1 = i; pos_2++; } } else { pos_1 = i; if(j+1 != pos_2) j++; else { pos_2++; j++; } } } while(pos_1 != i && j + 1 != pos_2) j++; cout << j - i + 1 << endl; return 0; }

                    • -1
                      @ 2023-9-25 20:00:00

                      #include<stdio.h> int find(char*s,int N){ for(int i=1;i<=N/2;i++){ if(N%i==0){ int isRepeat=1; for(int j=0;j<N;j++){ if(s[j]!=s[j%i]){ isRepeat=0; break; } }if(isRepeat){ return i; } } }return N; } int main(){ int N; scanf("%d",&N); char s[1001]; scanf("%s",s); int min=find(s,N); printf("%d",min); return 0; }

                      • -1
                        @ 2023-8-14 22:57:45

                        #include<iostream> #include<cstring> using namespace std;

                        int main(){ int N; cin>>N; string str; cin>>str; for(int i=1;i<=N;i++) { if(N%i0) { int flag = 0; for(int k = i;k < N;k++) { if(str[k]!=str[k-i]) { flag = 1; break; } } if(flag0) { cout<<i; break; } }

                        }
                        cout<<endl;
                        return 0;
                        

                        }

                        • 1

                        信息

                        ID
                        49
                        时间
                        1000ms
                        内存
                        128MiB
                        难度
                        7
                        标签
                        (无)
                        递交数
                        2068
                        已通过
                        495
                        上传者