题意:
先给一个数D(看作字符串)然后每次变化时把这个字符串中 字符相同的连续一段映射成两个信息加入新的串
这两个信息为: 相同的这个字符,这个字符的数目
D -> D1
D1 -> D1 11
D111 -> D1 13
D113 -> D1 12 31
D11231-> D1 12 21 31 11
#include<bits/stdc++.h>
#include<cstring>
#define FI first
#define SE second
using namespace std;
typedef long long ll;
typedef pair<int, int> P;
const int maxn = 1e5 + 7;
int n;
string s;
string ss(int a) {
string res;
while(a) {
res.push_back((char)(a%10 + '0'));
a /= 10;
}
reverse(res.begin(), res.end());
return res;
}
void solve() {
string res;
char c; int t;
c = s[0], t = 1;
for(int i = 1; i < s.size(); ++i) {
if(s[i] != s[i-1]) {
res.push_back(c);
res = res + ss(t);
c = s[i];
t = 1;
}
else t++;
}
res.push_back(c);
res = res + ss(t);
s = res;
}
int main() {
cin >> s >> n;
for(int i = 1; i < n; ++i) {
solve();
//cout << s << endl;
}
cout << s;
return 0;
}