#include <iostream>
#include <string>
using namespace std;
string replace_num_with_x(const string &str);
int main() {
cout << "Please enter a line of text:";
string str;
getline(cin, str);
cout << replace_num_with_x(str);
}
string replace_num_with_x(const string &str) {
string word, result;
string::size_type str_size = str.size(), start = 0, end;
do {
end = str.find(' ', start);
if (end == string::npos) {
word = str.substr(start);
start = str_size;
}
else {
word = str.substr(start, end - start);
start = end + 1;
}
bool all_digits = true;
string::size_type word_size = word.size();
for (string::size_type i = 0; i < word_size; ++i) {
if (word[i] < '0' || word[i] > '9') {
all_digits = false;
break;
}
}
if (!result.empty()) {
result += ' ';
}
if (all_digits) {
result.append(word_size, 'x');
} else {
result += word;
}
}
while (start < str_size);
return result;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RyaW5nIHJlcGxhY2VfbnVtX3dpdGhfeChjb25zdCBzdHJpbmcgJnN0cik7CgppbnQgbWFpbigpIHsKICAgIGNvdXQgPDwgIlBsZWFzZSBlbnRlciBhIGxpbmUgb2YgdGV4dDoiOwogICAgc3RyaW5nIHN0cjsKICAgIGdldGxpbmUoY2luLCBzdHIpOwogICAgY291dCA8PCByZXBsYWNlX251bV93aXRoX3goc3RyKTsKfQoKc3RyaW5nIHJlcGxhY2VfbnVtX3dpdGhfeChjb25zdCBzdHJpbmcgJnN0cikgewogICAgc3RyaW5nIHdvcmQsIHJlc3VsdDsKICAgIHN0cmluZzo6c2l6ZV90eXBlIHN0cl9zaXplID0gc3RyLnNpemUoKSwgc3RhcnQgPSAwLCBlbmQ7CgogICAgZG8gewogICAgICAgIGVuZCA9IHN0ci5maW5kKCcgJywgc3RhcnQpOwogICAgICAgIGlmIChlbmQgPT0gc3RyaW5nOjpucG9zKSB7CiAgICAgICAgICAgIHdvcmQgPSBzdHIuc3Vic3RyKHN0YXJ0KTsKICAgICAgICAgICAgc3RhcnQgPSBzdHJfc2l6ZTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHdvcmQgPSBzdHIuc3Vic3RyKHN0YXJ0LCBlbmQgLSBzdGFydCk7CiAgICAgICAgICAgIHN0YXJ0ID0gZW5kICsgMTsKICAgICAgICB9CgogICAgICAgIGJvb2wgYWxsX2RpZ2l0cyA9IHRydWU7CiAgICAgICAgc3RyaW5nOjpzaXplX3R5cGUgd29yZF9zaXplID0gd29yZC5zaXplKCk7CgogICAgICAgIGZvciAoc3RyaW5nOjpzaXplX3R5cGUgaSA9IDA7IGkgPCB3b3JkX3NpemU7ICsraSkgewogICAgICAgICAgICBpZiAod29yZFtpXSA8ICcwJyB8fCB3b3JkW2ldID4gJzknKSB7CiAgICAgICAgICAgICAgICBhbGxfZGlnaXRzID0gZmFsc2U7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KCgkJaWYgKCFyZXN1bHQuZW1wdHkoKSkgewoJCQlyZXN1bHQgKz0gJyAnOwoJCX0KCiAgICAgICAgaWYgKGFsbF9kaWdpdHMpIHsKICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh3b3JkX3NpemUsICd4Jyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmVzdWx0ICs9IHdvcmQ7CiAgICAgICAgfQogICAgfQogICAgd2hpbGUgKHN0YXJ0IDwgc3RyX3NpemUpOwoKICAgIHJldHVybiByZXN1bHQ7Cn0=