只有19',有个点超时。
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
char c;
cin>>c;
getchar();
string s;
getline(cin,s);
string s1="";
int num=1;
int in=0;
int m=0;
if(c=='D'){
for(int i=0,len=s.length();i<len;){
if((s[i]-'0')<=9&&(s[i]-'0')>=0){
if((s[i+1]-'0')<=9&&(s[i+1]-'0')>=0){
if((s[i+2]-'0')<=9&&(s[i+2]-'0')>=0){
m=(s[i]-'0')*100+(s[i+1]-'0')*10+(s[i+2]-'0');
for(int j=0;j<m;j++){
cout<<s[i+3];
}
i+=4;
}else{
m=(s[i]-'0')*10+(s[i+1]-'0');
for(int j=0;j<m;j++){
cout<<s[i+2];
}
i+=3;
}
}else{
for(int j=0;j<(s[i]-'0');j++){
cout<<s[i+1];
}
i+=2;
}
}else{
cout<<s[i];
i=i+1;
}
}
}
if(c=='C'){
for(int i=0,len=s.length();i<len;i+=in){
for(int j=in;j<len-1;j++){
if(s[j+1]==s[j]){
num++;
}else{
s1=s[j];
in=j+1;
i=0;
break;
}
}
if(num>1){
cout<<num;
if(i==len-num){
cout<<s[i];
}else{
cout<<s1;
}
num=1;
}else{
if(i==len-1){
cout<<s[i];
}else{
cout<<s1;
}
num=1;
}
}
}
return 0;
}