Задача
Зашифруйте текст из входного потока, заменяя каждый символ результатом сложения по модулю два его кода и кода предыдущего символа текста. Первый символ шифровать не нужно.
Входные данные
Последовательность символов.
Выходные данные
Зашифрованная последовательность символов, напечатанная через пробел.
Тесты
Входные данные | Выходные данные |
pack my box with five dozen liquor jugs | p 11 2 8 4b 4d 14 59 42 d 17 58 57 1e 1d 1c 48 46 f 1f 13 45 44 b 15 1f b 4e 4c 5 18 4 1a 1d 52 4a 1f 12 14 |
Код программы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import java.util.*; import java.math.*; class Main { public static void main (String[] args) { Scanner in = new Scanner(System.in); in.useDelimiter(""); //Чтение по одному символу. char a; char b = in.next().charAt(0); System.out.print(b); System.out.print(' '); while(in.hasNext()){ a = in.next().charAt(0); System.out.printf("%x ", a^b); b=a; } } } |
Решение
Объявляем 2 символьные переменные. Считываем первый символ и выводим его. Остальные символы будут считываться в цикле, пока не закончатся данные из потока ввода. По мере ввода запоминаем старый символ во 2 переменной и складываем их по модулю 2 и выводим результат в шестнадцатеричной системе.