В
Все
Б
Биология
Б
Беларуская мова
У
Українська мова
А
Алгебра
Р
Русский язык
О
ОБЖ
И
История
Ф
Физика
Қ
Қазақ тiлi
О
Окружающий мир
Э
Экономика
Н
Немецкий язык
Х
Химия
П
Право
П
Психология
Д
Другие предметы
Л
Литература
Г
География
Ф
Французский язык
М
Математика
М
Музыка
А
Английский язык
М
МХК
У
Українська література
И
Информатика
О
Обществознание
Г
Геометрия
fanaidap
fanaidap
08.01.2020 20:48 •  Информатика

Даны три динамических двумерных массива одного размера. Вывести ту из них, норма которой наименьшая. Пояснение: нормой двумерного массива C++

Показать ответ
Ответ:
Сашулька2007
Сашулька2007
24.07.2020 23:25
PascalABC.NET 3.3.5, сборка 1659 от 09.04.2018
Внимание! Если программа не работает, обновите версию!

function Sed(n:integer):integer;
// Возвращает сумму четных цифр в числе
begin
  (n,Result):=(Abs(n),0);
  while n>0 do begin
    var d:=n mod 10;
    if d.IsEven then Result+=d;
    n:=n div 10
    end
end;

begin
  var (a,b):=ReadInteger2('Введите два целых числа через пробел:');
  var (s1,s2):=(Sed(a),Sed(b));
  if s1>s2 then Writeln(a) else Writeln(b)
end.

Пример
Введите два целых числа через пробел: 6213 5841
5841

begin
  var r:=Abs(ReadReal('Введите действительное число:'));
  if Trunc(r).IsEven then Writeln('YES') else Writeln('NO')
end.

Примеры
Введите действительное число: -435.234
NO

Введите действительное число: 20608.6536
YES
0,0(0 оценок)
Ответ:
mohob
mohob
17.02.2020 19:24
2^2018 в двоичной системе есть единица и 2018 нулей. 2018=2048-32+2
(исходное выражение трансформировалось в 2^2018-2048+32-2)
2048=2^11 (единица и 11 нулей)
32=2^5 (единица и 5 нулей)
2=10 :)
Для начала прибавлю к 2^2018 100000. Получится число, у которого (с конца) 5 нулей, затем единица, затем идут 2012 нулей и снова единица.
Теперь буду вычитать 2 т .е. 100...100000-10. Займу единицу с шестой с конца позиции. Будет 100...011110. Теперь нужно вычитать из этого числа 2^11. Последние 11 позиций не изменятся (вычитаются нули), а вот для вычета единицы потребуется "зянять" её у самой первой цифры числа. Если нарисовать последние 12 цифр исходного числа, картинка будет следующая: 
1...000000011110
-   100000000000

0...111111111110
Осталось узнать, сколько единичек стояло на месте многоточия. В 2^11 было 12 цифр, соответственно, получаем 2018-12=2006 позиций, на которых стоят нули. К этим позициям нужно добавить 11 единиц, которые видны в "столбике".
Итого 2006+11=2017 единиц\
P.S. если понятен принцип решения, советую перерешить еще раз, потому что у меня очень плохо с арифметикой. 

***
Есть очень хорошее свойство: некое десятичное число n^m в переводе в n-ичную систему счисления будет в этой системе счисления выглядеть как единица и m нулей. Свойство довольно очевидное: при переводе из десятичной системы в n-ичную мы исходное число будем делить на n, т.е. получим остаток от деления 0 и частное n^(m-1). И так будет продолжаться m раз, пока мы не разделим число само на себя и получим единицу в последнем частном. Отсюда 1 и m нулей.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота