-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpoligrama.cpp
51 lines (43 loc) · 1.29 KB
/
poligrama.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
using ll = long long;
// Dividir a strings em quantos pedaços iguais possíveis, e verificar se o pedaço ordenado de cada uma é igual.
string solve(string s, int N){
for(int i = N; i >= 2; i--){ // Quantidade de substrings.
if(N % i == 0){ // Possível dividir em i strings iguais.
int sizeS = N/i; // Tamanho de cada string igual.
bool fans = false;
vector <string> ss;
string ans;
for(int j = 0; j <= N -sizeS; j += sizeS){
string temp = s.substr(j, sizeS);
if(!fans){
fans = true;
ans = temp;
}
// cout << temp << ' ';
sort(temp.begin(), temp.end());
ss.push_back(temp);
}
// cout << endl;
int equal = 1;
for(int j = 1; j < i; j++){
if(ss[j] == ss[j-1]) equal++;
else break;
}
if(equal == i) return ans;
}
}
return "*";
}
int main(){
ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
int N;
cin >> N;
string s;
cin >> s;
cout << solve(s,N) << endl;
return 0;
}
// Accepted.