Root /ArchiveAbout
()

Квадраты в прямоугольнике, номер столетия

Квадраты в прямоугольнике, номер столетия

На этой странице дано решение примеров 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 295 A **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 535 A **div** B - целочисленное деление А на В