На этой странице дано решение примеров Integer29 - Integer30 из задачника Абрамяна, в которых рассматривается максимально возможное количество квадратов в апямоугольнике, а также определение номера столетия по году.
Integer29. Даны целые положительные числа A, B, C. На прямоугольнике размера A × B размещено максимально возможное количество квадратов со стороной C (без наложений). Найти количество квадратов, размещенных на прямоугольнике, а также площадь незанятой части прямоугольника.
var
A, B, C, t: longword;
begin
write('A = ');
readln(A);
write('B = ');
readln(B);
write('C = ');
readln(C);
writeln;
{ A div C - количество квадратов, размещенных на стороне A,
B div C - количество квадратов, размещенных на стороне B,
Тогда общее количество квадратов равно произведению: }
t := (A div C) * (B div C); { <== количество квадратов }
writeln('Количество квадратов в прямоугольнике: ', t);
{ Поскольку C*C - площадь квадрата со стороной C, а всех таких
квадратов t, то общая площадь занятой части равна произведению: }
t := t * sqr(C); { <== площадь занятой части }
{ Незанятая часть прямоугольника равна разнице
общей площади и занятой части: }
t := A * B - t; { <== площадь незанятой части }
writeln('Площадь незанятой части: ', t);
readln
end.
**type** longword;
: Представляет 32-битовое целое число без знака.Диапазон значений: 0 .. 4 294 967 295A **div** B
- целочисленное деление А на ВA **div** B
- целочисленное деление А на В**function** Sqr(x: real): real;
: Возвращает квадрат числа x. Integer30. Дан номер некоторого года (целое положительное число). Определить соответствующий ему номер столетия, учитывая, что, к примеру, началом 20 столетия был 1901 год.
Очевидно, что для определения номера столетия необходимо находить целую часть при делении на 100. Но вот что делить? Возьмем, к примеру, любой год N с диапазона [1901, 1999] – это все года XX столетия кроме 2000 г. Чтобы получить для таких чисел 20 столетие (число 20), необходимо, очевидно, N разделить на 100 и откинуть остаток (получим 19), а потом добавить 1; одним словом, вычислить значение N **div** 100 + 1
. Но если так поступить с годом 2000 (который мы не включили в промежуток выше), то мы получим уже число 21, а это неверно, так как 2000 год – это ещё XX столетие.
Тогда как быть? Можно поступить так: сначала отнимаем 1 от N, делим на 100, а к результату прибавляем 1: (N-1) **div** 100 + 1
. Действидельно, если приглядется на это выражение, то видно, что при граничных 1901 и 2000 оно дает число 20. И даже для 1 года н.э. по формуле получим (1-1) div 100 + 1 = 0 div 100 + 1 = 0 + 1 = 1 (год) ⇒ 1 столетие.
Наконец, хочу напомнить, как в конце 1999 года разгорелся жаркий спор о следующем 2000 годе. Люди не знали, вернее, не понимали, как считать его – концом 20 столетия или началом 21 столетия. Здесь всё просто: поскольку началом нашей эры является 1 год (а не нулевой год – его не существует), то все года, оканчивающиеся на цифру 1, тоже будут началом – десятилетия, столетия, тысячелетия..., а все года с окончанием 0 будут концом – десятилетия, столетия и т.д. Таким образом, 2000 год был последним годом 20 столетия, а 1 января 2001 года наступил XXI век.
var
N: word;
begin
write('Введите номер года: ');
readln(N);
writeln;
{ Определяем номер столетия: }
N := (N - 1) div 100 + 1;
writeln('Номер столетия: ', N);
readln
end.
**type** word;
: Представляет 16-битовое целое число без знака.Диапазон значений: 0 .. 65 535A **div** B
- целочисленное деление А на В