10 条题解

  • 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
        @ 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
                      标签
                      (无)
                      递交数
                      2049
                      已通过
                      492
                      上传者