8 条题解
-
1
简单暴力,不必多言
#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; }
-
1
#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; } } }
-
1
#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; }
-
0
指针
#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; }
-
0
#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; }
-
0
#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
- 标签
- (无)
- 递交数
- 1612
- 已通过
- 387
- 上传者