Для ухаживания k дней подряд надо, чтобы k-e яблоко выросло к вечеру k-го дня. следовательно, начинать ухаживание можно не ранее, чем за k-1 день до вырастания последнего яблока. А поскольку на вырастание каждого яблока надо m дней, то k яблок вырастет в день номер m x k . Отступим от этой даты на k-1 день и получим p = m x k - (k -1)= k x (m-1) + 1 Проверим предложенную формулу на контрольном примере. k=5, m=2, d=5x(2-1)+1=6.
var m, n: integer;
begin Write('Период созревания яблока, дней: '); Readln(m); Write('Количество дней ухаживания: '); Readln(n); Writeln('Номер первого дня ухаживания: ', n * (m - 1) + 1); end.
Тестовое решение:
Период созревания яблока, дней: 2 Количество дней ухаживания: 5 Номер первого дня ухаживания: 6
В магическом квадрате сумма по каждой строке, по каждому столбцу и по обоим диагоналям равна одному и тому же числу, называемому константой магического квадрата. Программе достаточно найти одну любую сумму, принять её в качестве упомянутой константы, а затем обнаружить хотя бы один случай неравенства очередной вычисленной суммы с принятой константой. Если нарушений обнаружено не будет, квадрат является магическим.
const n2 = 10;
var a: array[1..n2, 1..n2] of integer; i, j, n: integer; k, s: longint; magic: boolean;
begin Write('Введите число строк (cтолбцов) в магическом квадрате: '); Readln(n); for i := 1 to n do begin Write('Введите через пробел элементы строки ', i, ': '); for j := 1 to n do Read(a[i, j]) end; s := 0; for j := 1 to n do s := s + a[1, j]; k := s; i := 2; magic := true; while magic and (i <= n) do begin s := 0; for j := 1 to n do s := s + a[i, j]; magic := (s = k); i := i + 1 end; j := 1; while magic and (j <= n) do begin s := 0; for i := 1 to n do s := s + a[i, j]; magic := (s = k); j := j + 1 end; if magic then begin s := 0; for i := 1 to n do s := s + a[i, i]; magic := (s = k); end; if magic then begin s := 0; for i := 1 to n do s := s + a[i, n - i + 1]; magic := (s = k); end; if magic then Writeln('Квадрат является магическим, k=', k) else Writeln('Квадрат не является магическим') end.
Тестовое решение:
Введите число строк (cтолбцов) в магическом квадрате: 5 Введите через пробел элементы строки 1: 11 24 7 20 3 Введите через пробел элементы строки 2: 4 12 25 8 16 Введите через пробел элементы строки 3: 17 5 13 21 9 Введите через пробел элементы строки 4: 10 18 1 14 22 Введите через пробел элементы строки 5: 23 6 19 2 15 Квадрат является магическим, k=65
Введите число строк (cтолбцов) в магическом квадрате: 4 Введите через пробел элементы строки 1: 1 1 1 1 Введите через пробел элементы строки 2: 1 1 1 1 Введите через пробел элементы строки 3: 1 1 1 1 Введите через пробел элементы строки 4: 1 1 2 -1 Квадрат не является магическим
Проверим предложенную формулу на контрольном примере.
k=5, m=2, d=5x(2-1)+1=6.
var
m, n: integer;
begin
Write('Период созревания яблока, дней: ');
Readln(m);
Write('Количество дней ухаживания: ');
Readln(n);
Writeln('Номер первого дня ухаживания: ', n * (m - 1) + 1);
end.
Тестовое решение:
Период созревания яблока, дней: 2
Количество дней ухаживания: 5
Номер первого дня ухаживания: 6
const
n2 = 10;
var
a: array[1..n2, 1..n2] of integer;
i, j, n: integer;
k, s: longint;
magic: boolean;
begin
Write('Введите число строк (cтолбцов) в магическом квадрате: ');
Readln(n);
for i := 1 to n do
begin
Write('Введите через пробел элементы строки ', i, ': ');
for j := 1 to n do Read(a[i, j])
end;
s := 0;
for j := 1 to n do s := s + a[1, j];
k := s; i := 2; magic := true;
while magic and (i <= n) do
begin
s := 0;
for j := 1 to n do s := s + a[i, j];
magic := (s = k);
i := i + 1
end;
j := 1;
while magic and (j <= n) do
begin
s := 0;
for i := 1 to n do s := s + a[i, j];
magic := (s = k);
j := j + 1
end;
if magic then begin
s := 0;
for i := 1 to n do s := s + a[i, i];
magic := (s = k);
end;
if magic then begin
s := 0;
for i := 1 to n do s := s + a[i, n - i + 1];
magic := (s = k);
end;
if magic then Writeln('Квадрат является магическим, k=', k)
else Writeln('Квадрат не является магическим')
end.
Тестовое решение:
Введите число строк (cтолбцов) в магическом квадрате: 5
Введите через пробел элементы строки 1: 11 24 7 20 3
Введите через пробел элементы строки 2: 4 12 25 8 16
Введите через пробел элементы строки 3: 17 5 13 21 9
Введите через пробел элементы строки 4: 10 18 1 14 22
Введите через пробел элементы строки 5: 23 6 19 2 15
Квадрат является магическим, k=65
Введите число строк (cтолбцов) в магическом квадрате: 4
Введите через пробел элементы строки 1: 1 1 1 1
Введите через пробел элементы строки 2: 1 1 1 1
Введите через пробел элементы строки 3: 1 1 1 1
Введите через пробел элементы строки 4: 1 1 2 -1
Квадрат не является магическим