#include <iostream>
#include <set>
using namespace std;
int main()
{
string a, res;
getline(cin, a);
for(int i = 0; i < a.length(); i++){
if((int)a[i] >= 65 && (int)a[i] <= 90) res += (char)(65 + int)a[i]) - 65) + 3) % 26));
else if((int)a[i] >= 97 && (int)a[i] <= 122) res += (char)(97 + int)a[i]) - 97) + 3) % 26));
else res += a[i];
}
cout << res;
return 0;
}
Объяснение:
Алгоритм простой. Побуквенно считываем строку и если буква - элемент латинского алфавита - кодируем ее, иначе оставляем как есть.
P.s. Если ответ, жмякните на " " . Это мотивирует давать ответы дальше.
Делим число в десятичной системе на основание числа, которое мы хотим получить, то есть на 2:
200 / 2 = 100 (0), где 0 - это остаток. Действительно, 2 · 100 + 0 = 200
100 / 2 = 50 (0)
50 / 2 = 25 (0)
25 / 2 = 12 (1), 2 · 12 + 1 = 24 + 1 = 25. Это можно представить так: у Вас есть 25 яблок и 2 друга, между которыми нужно поровну разделить все яблоки. Вы можете обоим дать только по 12 яблок, а останется 1. Это и будет остаток.
12 / 2 = 6 (0)
6 / 2 = 3 (0)
3 / 2 = 1 (1)
1 / 2 = 1 (1), применим на том же примере с яблоками: у нас есть одно яблоко и 2 друга, а нужно разделить количество яблок поровну, не деля яблоко пополам. У Вас сделать это не получится, поэтому у Вас остаётся 1 яблоко, то есть остаток.
Теперь "собираем" остатки снизу вверх:
11001000₂ - это и будет наш двоичный код.
ответ11001000