C++ Сэр Галахад главным делом своей жизни поставил поиски Святого Грааля. Рыцарь проверяет разные места одно за другим. Места, в которых сэр Галахад нашел следы, ведущие к Граалю, он отметил в своем дневнике числом, обозначающим количество зацепок. Определите, какое наибольшее количество зацепок нашел Сэр Галахад в своих путешествиях, если известно, что последнее посещенное место рыцарь отметил числом 0. Формат входных данных
Последовательность целых чисел Ai (0 ≤ Ai ≤ 1000), оканчивающаяся числом 0.
Формат выходных данных
Одно число - ответ на задачу.
var n:integer;
begin
writeln('Сколько стоит товар?');
readln(n);
n:=1000-n;
writeln('Сдача ',n,' рублей. Нужны купюры:');
writeln(n div 500, ' по 500 рублей, ', (n-(n div 500)*500)div 100, ' по 100 рублей, ', (n mod 100) div 50, ' по 50 рублей, ', (n-(n div 50)*50) div 10,' по 10 рублей, и ещё ', n mod 10, ' рублей мелочью.');
end.
Результат работы:
Сколько стоит товар?
324
Сдача 676 рублей.
Нужны купюры:
1 по 500 рублей, 1 по 100 рублей, 1 по 50 рублей, 2 по 10 рублей, и ещё 6 рублей мелочью.
152(10) = 10011000(2)
157(10) = 10011101(2)
Запишем их друг под другом
10011000
10011101
Нам нужен наибольший байт маски. В маске под единицами записывается адрес сети, под нулями - номер хоста. Адрес сети у этих адресов одинаковый, то есть для поиска наибольшего байта маски мы можем байты разделить так
10011 000
10011 101
Первые пять разрядов - это окончание адреса сети, последние три - начало хоста. Хосту в маске подсети соответствуют нули, адресу сети - единицы, получается, что наибольший байт маски равен
10011 000
10011 101
11111 000 - маска
11111000(2) = 248(10)