РЕШИТЬ ЗАДАЧУ C++ Иванов отправил файл с сохраненным XML-строкой по электронной почте
своему коллеге Краснову. Однако, к сожалению, файл поврежден в процессе
пересылки: ровно один символ в строке сменился на некоторый другой символ.
Нужно написать программу, которая за строкой, получивший Краснов,
восстановит исходный XML-строка, отправлял Иванов.
Входные данные
Входной файл содержит одну строку, заменой ровно одного символа может
быть преобразован в корректный XML-строку. Длина строки лежит в пределах
от 7 до 1000 включительно. Строка содержит только строчные буквы латинского алфавита
и символы «<» (ASCII код 60), «>» (ASCII код 62) и «/» (ASCII код 47).
Исходные данные
Выходной файл должен содержать корректный XML-строку, который может быть
полученный из строки во входном файле заменой ровно одного символа на другой.
Примеры:
input Output
Так как первые два байта слева в IP-адресе узла и адресе сети совпадают, значит, в маске для получения такого результата при поразрядной конъюнкции в двоичной системе должны быть все единицы. В маске 16 единиц есть
Разложение третьих чисел в адресах
номер 7 6 5 4 3 2 1 0
59(10)=0 0 1 1 1 0 1 1
65(10)=0 0 1 0 0 0 0 1
как видно полное совпадение видно в первых трех разрядах слева, значит 16+3=19 единиц в маске уже есть, но возможны еще...
Если биты пронумеровать справа налево
Для 4-го и 3-го бита получаем: ? & 0 = 0 -> в маске может находиться как единица, так и 0. Но так как по заданию у нас спрашивается наибольшее возможное количество единиц, то значит, необходимо сказать, что в маске данный бит равен 1.
Для 2-го бита получаем: ? & 1 = 0 -> в маске может находиться только 0.
Поэтому выходит что максимальное значение единиц в маске 19+2=21