10 条题解

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

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

    • 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-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;
          

          }

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