Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include<vector>
- using namespace std;
- int main() {
- string str;
- cin >> str;
- int n = str.length();
- vector <vector <string>> new_str(n, vector<string>(n));
- for (int len = 1; len <= n; len++) {
- int r;
- for (int l = 0; l + len - 1 < n; l++) {
- r = l + len - 1;
- string min = str.substr(l, len);
- for (int r1 = l; r1 < r; r1++){
- int l2 = r1+1;
- string tmp = new_str[l][r1] + new_str[l2][r];
- if (tmp.size() < min.size())
- min = tmp;
- }
- for (int k = 1; k < len; k++) {
- if (len % k == 0) {
- bool period = true;
- if (str.substr(l, len - k) != str.substr(l + k, len - k ))
- period = false;
- if (period) {
- string tmp = to_string(len/k) + "(" + new_str[l][l+k-1] + ")";
- if (tmp.size() < min.size())
- min = tmp;
- }
- }
- }
- new_str[l][r] = min;
- }
- }
- cout << new_str[0][n - 1];
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement