М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
dilinur15
dilinur15
21.03.2023 00:04 •  Информатика

Есть кучка из 1057 орехов. за одну операцию можно любую из уже имеющихся кучек разделить на две. если при этом получатся две неравные кучки, то взимается штраф 1 рубль. какова наименьшая возможная сумма штрафа, которую придется заплатить, чтобы получить 1057 кучек по одному ореху в каждом?

👇
Ответ:
404678
404678
21.03.2023
Деление до конца без штрафов возможно, если количество орехов в кучке будет какой-либо степенью двойки (2, 4, 8, 16, 32, 64, 128, 256, 512). Число 1057 - нечетно, следовательно, его можно представить <четное>+<нечетное>. При делении 1056+1 получим первый штраф. Число 1056 не является степенью двойки, поэтому необходимо опять поделить орехи на неравные кучки: 1024+32 (второй штраф). 1024 и 32 - степени двойки, значит дальнейшее разделение можно выполнить без штрафов.
Можно делить, например, так:
1. 1024 и 33 ореха (штраф 1 рубль)
2. 33 делим на 2 кучки: 32 и 1 (штраф 1 рубль)
3 и все следующие операции: кучки из 1024 и 32 орехов делим на равные кучки (1024: 512 и 512, 512: 256 и 256, 256: 128 и 128, 128: 64 и 64, 64: 32 и 32, 32: 16 и 16 и т.д.).
Получаем, что минимальная сумма штрафа = 2 рубля.
4,4(33 оценок)
Открыть все ответы
Ответ:
Donyakotova
Donyakotova
21.03.2023
Var a:array of array of integer;
c:array of array of integer;
ma:array of array of integer;
i,j,n:integer;
begin;
randomize;
readln(n);
setlength(a,n+1); //задаём размерность динамических массивов
setlength(c,n+1);
setlength(ma,n+1);
for i:=1 to n do
begin;
setlength(a[i],n+1);
setlength(c[i],n+1);
setlength(ma[i],n+1);
end;

writeln('Matrix A:');   //генерируем массив псеводслучайных чисел
for i:=1 to n do begin;
 writeln;
  for j:=1 to n do
   begin;
    a[i,j]:=random(10);
    write(a[i,j]:4);
   end;
 end;
writeln;

writeln('Matrix C:'); //аналогично
for i:=1 to n do
 begin;
 writeln;
  for j:=1 to n do
   begin;
    c[i,j]:=random(10);
    write(c[i,j]:4);
   end;
 end;

for i:=1 to n do     //сохраняем матрицу C для транспонации
  for j:=1 to n do
    ma[i,j]:=c[i,j];
    writeln;

writeln('Transpose matrix C:'); //транспонируем C
for i:=1 to n do
 begin;
  writeln;
   for j:=1 to n do
    begin;
     c[i,j]:=ma[j,i];
     write(c[i,j]:4);
    end;
 end;

writeln;
writeln('Final matrix:'); // получаем финальную матрицу
for i:=1 to n do
 begin;
  writeln;
   for j:=1 to n do
    begin;
     ma[i,j]:=2*c[i,j]*a[i,j];
{по свойству дистрибутивности матриц С(A+A)=C*A+C*A=2*C*A}
     write(ma[i,j]:4);
    end;
 end;
end.
4,6(20 оценок)
Ответ:
ндо
ндо
21.03.2023
1. 10
2. 12
3. 3
4. 22
5. 15
6. 34
7. 3
Часть 2
1. 
Var
  n:integer;
Begin
  Write('Введи число ');
  Readln(n);
  if (n mod 2) = 0 then write(n,' чётное) else write(n,' нечётное);
End.
2.
Var
  a,b:integer;
Begin
  Write('Введи числа ');
  Readln(a,b);
  if a>b then Begin Write('a = ',b*a,' b = ',a+b) else write('a = ',a+b,' b = ',a*b);
End.
3.
Var
  n:integer;
Begin
  write('Введи двузначное число ');
  Readln(n);
  if ((n div 10) = 6) or ((n mod 10) = 6) then write('6 присутствует') else write('6 нет в этом числе');
End.
4,4(14 оценок)
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ