fork download
  1. #include <iostream>
  2. #include <string>
  3.  
  4. using namespace std;
  5.  
  6. string decode_message(int n, string msg) {
  7. if (msg.empty() || msg == "NULL") {
  8. return "NULL";
  9. }
  10.  
  11. string decoded_message = "";
  12. bool dot_encountered = false;
  13. for (int i = 0; i < msg.length(); ++i) {
  14. if (msg[i] == '-') {
  15. decoded_message += ' ';
  16. } else if (msg[i] == '#' && i + 1 < msg.length() && isdigit(msg[i + 1])) {
  17. decoded_message += static_cast<char>(msg[i + 1] - '0' + 64);
  18. ++i; // Skip the number character
  19. } else if (msg[i] == '.') {
  20. decoded_message += '.';
  21. dot_encountered = true;
  22. } else if (msg[i] == '_') {
  23. decoded_message += ' ';
  24. } else if (isdigit(msg[i])) {
  25. if (dot_encountered) {
  26. decoded_message += msg[i];
  27. } else {
  28. decoded_message += static_cast<char>(msg[i] - '0' + 64);
  29. }
  30. }
  31. }
  32.  
  33. for (char& c : decoded_message) {
  34. c = toupper(c);
  35. }
  36.  
  37. return decoded_message;
  38. }
  39.  
  40. int main() {
  41. int n;
  42. string msg;
  43.  
  44. cin >> n;
  45. cin.ignore(); // Ignore newline character after reading integer
  46. getline(cin, msg);
  47.  
  48. cout << decode_message(n, msg) << endl;
  49.  
  50. return 0;
  51. }
  52.  
Success #stdin #stdout 0.01s 5292KB
stdin
24
2 1 4 _ 3 1 2 0 _ @ # 459
stdout
BAD CAB@ DEI