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

23 марта,21 марта, 4 апрель, 19 апреля,23 апреля никита,петя,татьяна, и нина родились в 2007 году. татьяна старше за никиту на 2 дня, петя родился в апреле, нина старше за никиту, татьяна младше за петю

👇
Ответ:
Задачу решаем на числовом луче.
1. Татьяна старше Никиты (на 2 дня), т.е. она родилась 21 марта, а Никита - 23 марта. Это если основываться на датах из условия задачи.
Татьяна 21.03 Никита 23.03 >
2. Петя родился в апреле.
Татьяна 21.03 Никита 23.03 Петя >
4. Татьяна младше Пети.
Это возможно только если Петя родился в одном из предыдущих годов, но сказано, что все одногодки, поэтому задача решения не имеет.
4,4(33 оценок)
Открыть все ответы
Ответ:
Davicc
Davicc
25.05.2020

На первый взгляд кажется, что задача простая. Поскольку последовательность состоит из целых чисел, то среди них могут быть и отрицательные, а значит, минимальное произведение получится, если умножить максимальное положительное число на минимальное отрицательное. Однако, это не так, если в последовательность входят только положительные или только отрицательные числа, поэтому такие случаи требуют особого рассмотрения.

Если все элементы последовательности положительные, то очевидно, что минимальное произведение – это произведение двух минимальных элементов последовательности. Если же все элементы последовательности отрицательные, то как ни странно, минимальное произведение дадут два максимальных элемента последовательности (так как они по модулю ближе всех к нулю, а минус на минус даёт плюс).

Таким образом, получается, что нам необходимо найти в последовательности два максимальных и два минимальных элемента, а потом выбрать минимальное произведение из трёх. Для одновременного поиска двух максимальных элементов можно использовать стратегию «турнирной таблицы». После считывания каждого элемента нужно будет сравнивать его с текущими значениями первого и второго максимума, и разбирать случаи. Их будет три. Первый случай – очередной элемент последовательности больше текущего значения первого максимума. Тогда нужно первый максимум опустить на вторую позицию, а на первую позицию записать новый элемент. Второй случай – элемент не больше первого максимума (возможно, что равен ему), но больше второго. Тогда первый максимум не изменяется, а на вторую позицию записывается считанный элемент. Третий случай – элемент не больше второго максимума (возможно, что равен ему). В этом случае нам не нужно предпринимать никаких действий. Минимумы ищутся аналогично.

Остаётся последний вопрос  – какие начальные значения задать максимумам и минимумам.  По аналогии с задачей № 2 в максимумы нужно записывать числа, которые гарантированно меньше любого элемента последовательности, а в минимумы – числа, которые гарантированно больше любого элемента последовательности.  

var a,max1,max2,min1,min2,p:integer;

begin

max1 := -10001;

 max2 := -10001;

 min1 := 10001;

 min2 := 10001;

 read(a);

while a <> 0 do begin

   if a > max1

then begin

max2 := max1;

     max1 := a

end

   else if a > max2 then max2 := a;

if a < min1

then begin

min2 := min1;

      min1 := a

end

    else if a < min2 then min2:=a;

    read(a)

end;

 p := max1 * min1;

if max1 * max2 < p then p := max1 * max2;

if min1 * min2 < p then p := min1 * min2;

writeln(p)

end.

4,6(74 оценок)
Ответ:
gerastern
gerastern
25.05.2020

1)

#include <iostream>

using namespace std;

int main()

{

   int n,cht;

   cht = 0;

   float a;

   cin >> n;

   float mas[10000];

   for (int i = 0; i < n; i++) {

       cin >> a;

       if (a > 0) { cht++; }

   }

   cout << cht;

}

2)

#include <iostream>

using namespace std;

int main()

{

   int n, cht;

   cht = 1;

   int a;

   cin >> n;

   int mas[10000];

   for (int i = 0; i < n; i++) {

       cin >> a;

       if (a % 2 == 1) { cht=cht * a; }

   }

   cout << cht;

}

Объяснение: Будет не понятно, задавай вопросы, удачи.

4,5(71 оценок)
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ