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

Выручайте. vba. от этого зависит мое пребывание в шараге. для 3: дана действительная квадратная матрица порядка n (n - нечетное), все элементы которой различны. найти наибольший элемент среди стоящих на главной и побочной диагоналях и поменять его местами с элементом, стоящим на пересечении этих диагоналей.

👇
Открыть все ответы
Ответ:
Бека672
Бека672
12.10.2020
Чтобы переводить из 10-ой системы счисления в любую из меньших нужно делить столбиком нацело. Если нацело не получается, то берется самый большой делитель и записывается, а разность делимого и произведения делителя с номером нашей системы счисления является последним числом нашего (в данном случае двоичного) числа. После этих преобразований повторяем действие, но уже делимым будет наш предыдущий делитель. Повторять нужно до тех пор, пока делитель не будет равен нулю.
Пример:
12₁₀ -> X₂
  12 | 2
  -    |
  12 | 6 | 2
  -   |
   0    6 | 3 | 2
        --- -   |
         0   2   1 | 2
             --- -   |
              1   0   0
                 
                   1

Помним, что записывать число нужно в обратном порядке, то есть наше число X будет равно 1100₂
4,5(58 оценок)
Ответ:
Red4521
Red4521
12.10.2020
// PascalABC.NET 3.3, сборка 1607 от 31.12.2017
// Внимание! Если программа не работает, обновите версию!

const
  cunit=1000;
  DISCOUNT_PER_UNIT=500;
  MAX_DISCOUNT=0.2;

function getTotalCost(firstCost,secondCost,fullUnits:real):real;
begin
  var couponSum:=fullUnits*DISCOUNT_PER_UNIT;
    var secondCostWithDiscount:=
        secondCost-Min(MAX_DISCOUNT*secondCost,couponSum);
    Result:=firstCost+secondCostWithDiscount
end;

function solveKnapsack(weights:array of integer; totalWeight:integer):
    array of integer;
begin
    var maxUnits:=Trunc(totalWeight/cunit+1);
    var old:=ArrFill(maxUnits+1,totalWeight);
    old[0]:=0;
    var cur:=new integer[maxUnits+1];
    var n:=weights.Length;
    for var pos:=0 to n-1 do begin
        cur.Fill(t->totalWeight);
        for var units:=0 to maxUnits do begin
            cur[units]:=Min(cur[units],old[units]);
            var add:=Trunc(weights[pos]/cunit);
            if units-add >= 0 then
                cur[units]:=Min(cur[units],old[units-add]+weights[pos])
            end;
            cur.CopyTo(old,0);
        end;
    Result:=old;    
end;

function getSolution(costs:array of integer):real;
begin
  var n:=costs.Length;
    var totalCost:=0;
    for var i:=0 to n-1 do totalCost+=costs[i];
    var minForUnits:=solveKnapsack(costs,totalCost);
    Result:=totalCost;
    var maxUnits:=Trunc(totalCost/cunit+1);
    for var units:=0 to maxUnits do begin
      var cur:real:=minForUnits[units];
        Result:=Min(Result,getTotalCost(minForUnits[units],totalCost-cur,units))
      end
end;

begin
  Writeln(getSolution(ReadArrInteger(ReadInteger)):0:2)
end.

Пример
15
1131 2764 1249 3885 4971 2526 1506 1919 520 3094 2183 2503 277 2293 4477
30415.40
4,5(94 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ