Сначала вспомним, что такое конъюнкция: это аналог логической операции И(в простонародье - операции умножения). В бинарной(двоичной) системе счисления она используется так :
0 и 0 = 0
1 и 0 = 0
0 и 1 = 0
1 и 1 = 1
Ну, а теперь возьмём пример
Адрес: 231.32.255.131
Маска: 255.255.240.0
Отлично. Посмотрим сразу на число 255, оно в двоичной системе выглядит так : 11111111. Это значит, что при побитовой конъюнкции любого числа, получается тоже самое число. Т.е. :
1)uses crt; var i,j,n,ans:integer; begin read(n); for i:=1 to 9 do for j:=0 to 9 do if i+j=n then ans:=ans+1; writeln(ans); end. 2) uses crt; var i,n:integer; x:array[1..100] of integer; begin writeln('Введите количество x и значения: '); read(n); for i:=1 to n do read(x[i]); writeln('x y'); for i:=1 to n do writeln(x[i],' ',x[i]*x[i]+3); end. 3. uses crt; var i:integer; begin for i:=1 to 5 do write(i*i*i,' '); end. 4. uses crt; var i,n,sum:real; begin writeln('Введите N:'); read(n); i:=3; while i<=n do begin sum:=sum+1/i; i:=i+3; end; writeln(sum); end. 5. uses crt; var j,i,n,sum:integer; a:array[1..100] of integer; begin writeln('Введите количество чисел и сами числа:'); read(n); for i:=1 to n do begin sum:=0; read(a[i]); for j:=1 to length(inttostr(a[i])) do sum:=sum+strtoint(inttostr(a[i])[j]); if sum mod 3 = 0 then write(a[i],' '); end; end. 6.a)uses crt; var n:string; begin read(n); writeln(max(strtoint(n[1]),strtoint(n[2]))); end. б) uses crt; var n:string; begin read(n); writeln(max(max(strtoint(n[1]),strtoint(n[2])),strtoint(n[3]))); end.
96
Объяснение:
Сначала вспомним, что такое конъюнкция: это аналог логической операции И(в простонародье - операции умножения). В бинарной(двоичной) системе счисления она используется так :
0 и 0 = 0
1 и 0 = 0
0 и 1 = 0
1 и 1 = 1
Ну, а теперь возьмём пример
Адрес: 231.32.255.131
Маска: 255.255.240.0
Отлично. Посмотрим сразу на число 255, оно в двоичной системе выглядит так : 11111111. Это значит, что при побитовой конъюнкции любого числа, получается тоже самое число. Т.е. :
231 = 11100111, 255 = 11111111. (возьму первые 4 бита : 1*1=1,1*1=1,1*1=1,1*0=0)
Т.о. 231(логическое И)255=231.
Теперь адрес сети:
231*255=231
32*255=32
255*240=240
131*0=0
Вот и получили адрес сети : 231.32.240.0
Теперь решение задачи :
Тут нужно в обратную сторону. Есть IP адрес, есть узел.
Узел : 98.162.71.123
Адрес: 98.162.71.96
Надо найти правый байт. У узла он равен 123(в десятичной) -> 1111011(в двоичной). У адреса он равен 96(в десятичной) -> 1100000.
Ну, а теперь обратное действие, смотрим на байты узла, умножаем на x, получаем байты адреса. Вот так :
1111011*=1100000
1*х=1 -> x=1
1*x=1 -> x=1
1*x=0 -> x=0
... И так далее, но дальше считать нет смысла, ибо все остальные пять байтов будут равны нулю, т.к. правая часть вся равна нулю(по свойствам выше)
Получили =1100000, а это тоже самое, что и последний байт адреса сети, и равен он 96.
Получили маску : 255.255.255.96
var i,j,n,ans:integer;
begin
read(n);
for i:=1 to 9 do
for j:=0 to 9 do
if i+j=n then
ans:=ans+1;
writeln(ans);
end.
2)
uses crt;
var i,n:integer;
x:array[1..100] of integer;
begin
writeln('Введите количество x и значения: ');
read(n);
for i:=1 to n do
read(x[i]);
writeln('x y');
for i:=1 to n do
writeln(x[i],' ',x[i]*x[i]+3);
end.
3.
uses crt;
var i:integer;
begin
for i:=1 to 5 do
write(i*i*i,' ');
end.
4.
uses crt;
var i,n,sum:real;
begin
writeln('Введите N:');
read(n);
i:=3;
while i<=n do
begin
sum:=sum+1/i;
i:=i+3;
end;
writeln(sum);
end.
5.
uses crt;
var j,i,n,sum:integer;
a:array[1..100] of integer;
begin
writeln('Введите количество чисел и сами числа:');
read(n);
for i:=1 to n do
begin
sum:=0;
read(a[i]);
for j:=1 to length(inttostr(a[i])) do
sum:=sum+strtoint(inttostr(a[i])[j]);
if sum mod 3 = 0 then
write(a[i],' ');
end;
end.
6.a)uses crt;
var n:string;
begin
read(n);
writeln(max(strtoint(n[1]),strtoint(n[2])));
end.
б)
uses crt;
var n:string;
begin
read(n);
writeln(max(max(strtoint(n[1]),strtoint(n[2])),strtoint(n[3])));
end.