ApollaKop
22.04.2020 05:43

Дана прямоугольная клеточная доска размера m ×n клеток. также дано неограниченное коли- чество стандартных доминошек размера 2 × 1 клетку. доминошки можно поворачивать. требуется уложить как можно больше доминошек на доску так, чтобы соблюдались следующие условия: 1. каждая доминошка полностью покрывает две клетки доски. 2. никакие две доминошки не перекрываются. 3. каждая доминошка полностью лежит внутри доски. касание краев доски допускается. найдите максимальное количество доминошек, которое можно уложить с данными ограничени- ями. формат входных данных в единственной строке записано два целых числа m и n — размеры доски в клетках (1 ⩽ m ⩽ n ⩽ 16). формат выходных данных выведите одно число — максимальное количество доминошек, которое можно уложить. язык с++ , выполняется с long long в приложении code : : bloks

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
ivolapseb
01.07.2020 17:57
Выполняя алгоритм, получаем следующий результат (15 итераций)

1. 0..65534 -> 32767
2. 0..32766 -> 16383
3. 0..16382 -> 8191
4. 0..8190  -> 4095
5. 0..4094  -> 2047
6. 2048..4094 -> 3071
7. 2048..3070 -> 2559
8. 2560..3070 -> 2815
9. 2816..3070 -> 2943
10. 2944..3070 -> 3007
11. 2944..3006 -> 2975
12. 2976..3006 -> 2991
13. 2992..3006 -> 2999
14. 3000..3006 -> 3003
15. 3000..3002 -> 3001

Если лень перебирать вручную, можно воспользоваться программой

var k,l,r,x,f:integer;
begin
f := 3001;
l := 0;
r := 65534;
x := (l + r) div 2;
k := 1;
while (x <> f) and (l < r) do
  begin
  writeln(k,' ',l,' ',r,' ',x);
  k := k + 1;
  if f < x then r := x - 1
    else l := x + 1;
  x := (l + r) div 2
  end;
writeln(k,' ',l,' ',r,' ',x);
end.
0,0(0 оценок)
Ответ:
IamGroot1
01.03.2022 05:34
var   s : string[50];
  i, j, k : word;  
 f : boolean;  
function isSpace(ch : char) : boolean;
begin   isSpace := false;  
if ch = ' ' then isSpace := true;
end;  
begin   f := false;  
   repeat     j := 0;
    writeln('введите строку, состоящую из 2 слов');
    readln(s);    
for i := 1 to length(s) do    
   if isSpace(s[i]) then  
    begin    
     inc(j);      
   k := i;       end;
     if j =1 then f := true;
    until f;    
write(copy(s, k + 1, length(s)), ' ', copy(s, 1, k - 1)); 
end.
недавно такую писала :)
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота