Program ex;
var a,b,c,s,k:integer;
begin
writeln('Введите первое число');
readln(a);
writeln('Введите первое второе');
readln(b);
writeln('Введите первое третье');
readln(c);
if a>0 then
begin k:=k+1;
s:=a;
end;
if b>0 then
begin
s:=s+b;
k:=k+1;
end;
if c>0 then
begin
k:=k+1;
s:=s+c
end;
writeln('Сумма=',s);
writeln('Количество положительных чисел=',k)
end.
256 × 1024 =262144 килобайт
262145 × 1024 = 268435456 байт
268435456 × 8 = 2147483648 бит
Итак, нужно найти число групп, в каждой из которых ни одно из чисел не делит все остальные.
Строим группы так:
(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)