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

В результате выполнения программы напечатало число 40. Какое наибольшее значение может иметь переменная S после выполнения есл вводить только натуральные числа?
Var k, m, S, N: integer;
Dat: array[1..100] of integer;
Begin
N:= 100;
m := 0;
S := 100;
for k := 1 to N do readln(Dat[k]);
for k := 1 to N do
begin
S := S div Dat[k];
if Dat[k]>m then begin m := Dat[k]
end;
end;
writeln(m*2);
end.

👇
Ответ:
youngfng
youngfng
09.07.2022

Объяснение:

) Анализируем программу и определяем назначение каждой из переменных в ней:

N – определяет, какая часть массива Dat реально используется в вычислениях (из него используются элементы с индексами от 1 до N, то есть пять первых элементов);

S – используется для накопления суммы этих элементов массива;

m – изначально равно нулю, а затем переприсваивается – в нее заносится значение элемента массива, если этот элемент больше, чем текущее значение m. Это – типичный алгоритм поиска максимума. Значит, в m определяется (и в конце работы программы выводится на экран) максимальное значение среди обрабатываемых N элементов массива. 2) Итак, из пяти значений массива максимальное равно 10. Каким может быть наибольшее возможное значение суммы этих элементов?

Очевидно, сумма будет наибольшей, если каждое из слагаемых (элементов массива) будет возможно наибольшим. А наибольшее возможное значение элемента массива уже определено: оно равно 10. Если каждый элемент этой части массива будет равен 10, то вычисленный максимум будет равен 10. (Если какие-то элементы массива меньше 10, то это не даст максимально возможную сумму. Если же какие-то элементы массива больше 10, то максимум был бы равен уже не 10, а этому большему значению.)

3) Итак, заданному условию соответствует случай, когда каждый из обрабатываемых пяти элементов массива равен 10. Тогда их сумма (максимально возможная) будет равна 5*10 = 50.

ответ: 50.

1 нравится комментирова

4,8(89 оценок)
Открыть все ответы
Ответ:
Dmitro222
Dmitro222
09.07.2022
Итак, нужно найти число групп, в каждой из которых ни одно из чисел не делит все остальные.

Строим группы так:
(1) - 1
(2) - 2, 3, 5, 7, 11, 13... - все простые
(3) - 4, 6, 9, 10, 14, 15... - произведения двух простых 
...
(k) - произведения (k - 1) простых

И так пока не кончатся все числа. Поскольку в каждой группе наименьшее число 2^(k - 1), то k - минимальное, для которого 2^(k - 1) > N

По построению явно во всех группах ни одно число не делится на другое. Осталось проверить, что получено минимальное число групп.
Это очевидно: числа 1, 2, 4, ..., 2^(k-1) должны быть в разных группах.

Решение:
n = int(input())
t = 1
k = 0
while t <= n:
    t *= 2
    k += 1
print(k)
4,7(84 оценок)
Ответ:
Sanchoys123
Sanchoys123
09.07.2022
Реализация на Python
--

import datetime

import time

from math import sqrt

 

UTC = datetime.datetime.utcnow

 

class MyClass:

    def __init__(self, number):

       self.number = number

       self.res = 0

       self.acc = [[1]]

 

    def addToPos(self, pos, i):

        self.acc[pos] = self.acc[pos] + [i]

 

    def addToTail(self, i):

        self.acc = self.acc + [[i]]

 

    def testPos(self, pos, i):

        ret = True

        for x in self.acc[pos]:

            if i % x == 0:

                ret = False

                break

        return ret

 

    def addCand(self, i):

        ret = False

        pos = 0

        for lst in self.acc:

          if self.testPos(pos, i):

            ret = True

            self.addToPos(pos, i)

            break

          pos = pos + 1

 

        if not ret:

            self.addToTail(i)

 

 

    def calc(self):

        for i in range(2, self.number + 1):

            self.addCand(i)

        print(self.acc)

        print(len(self.acc))

 

def test(num):

   start = UTC()

  

   cl = MyClass(num)

   cl.calc()

 

   print (UTC() - start)

 

if __name__ == '__main__':

    test(int(input()))

    

   
python test.py
9
[[1], [2, 3, 5, 7], [4, 6, 9], [8]]
4
4,6(21 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ