Для начала.. Что-бы узнать сколько байт, надо кбайты умножить на 1024... 1) 5*1024=5120байт 2) 24*1024=24576кбайт*1024=25165824байт 3) 8*1024=8192*1024=8388608*1024=8589934592байт
var a, b: integer; begin readln(a, b); writeln(System.Math.Sign(a) = System.Math.Sign(b) ? 'Да' : 'Нет'); end.
Или ̶п̶р̶и̶м̶и̶т̶и̶в̶н̶е̶е̶ проще: var a, b: integer; begin readln(a, b); if (a > 0) then a := 1; if (a = 0) then a := 0; if (a < 0) then a := -1; if (b > 0) then b := 1; if (b = 0) then b := 0; if (b < 0) then b := -1; if (a = b) then writeln('Yes') else writeln('No'); end.
Немного ̶у̶п̶р̶о̶̶щ̶̶ё̶н̶н̶ы̶й̶ оптимизированный вариант: var a, b: integer; begin readln(a, b); if (a > 0) then a := 1 else if (a = 0) then a := 0 else a := -1; if (b > 0) then b := 1 else if (b = 0) then b := 0 else b := -1; if (a = b) then writeln('Yes') else writeln('No'); end.
Это сделает логическое выражение (a mod 2)+(b mod 2) = 1 ОБЪЯСНЕНИЕ: Оператор mod возвращает остаток от целочисленного деления операндов. a mod 2 будет равно нулю, если a четное или единице, если а нечетное. То же верно и для b mod 2. Рассмотрим поведение суммы (a mod 2)+(b mod 2) при различных комбинациях a и b 1. Оба нечетных. Сумма равна 1+1, т.е. 2 2. Одно четное, другое нечетное. Сумма равна 1+ 0 (или 0+1), т.е. 1 3. Оба четных. Сумма равна 0+0, т.е. 0. Следовательно, сумма равна единице тогда и только тогда, когда одно из чисел четное, а другое нечетное. Оставшаяся часть выражения превращает его в логическое, проверяя условие 1=1. Предлагаемое логическое выражение может быть использовано как в качестве правой части оператора присваивания, так и в качестве логичесвого выражения в операторах if-then-else или циклов while, repeat.
1) 5*1024=5120байт
2) 24*1024=24576кбайт*1024=25165824байт
3) 8*1024=8192*1024=8388608*1024=8589934592байт