Sub z() Dim a(10) As Integer p = 1 s = "Последовательность:" For i = 1 To 10 a(i) = Int(Rnd * 50) s = s & " " & a(i) If a(i) > 7 And a(i) < 20 Then p = p * a(i) n = n + 1 End If Next i s = s & Chr(13) & "Количество элементов: " & n & Chr(13) & "Их произведение: " & p MsgBox (s) End Sub
1. Отметим, что приписывание к двоичному числу двух младших разрядов предполагает предварительный сдвиг этого числа влево на два разряда (что равносильно умножению на 2²=4), а затем установку двух младших разрядов в соответствующие приписываемым битам значения. Следовательно, можно записать, что 4N+a>43, где a - число, образованное приписываемыми справа битами, которое не может превышать 11(2)=3(10) 4N+[0..3]≥44, откуда минимальное N=11 Теперь запишем N=11 в двоичной системе и применим к нему заданный алгоритм. N=1011(2), число единиц три, нечетное, приписываем 1, получая 10111. Теперь число единиц четное, приписываем 0 и получаем R=101110(2). В десятичной записи ему соответствует число 46. ответ: 46
Dim a(10) As Integer
p = 1
s = "Последовательность:"
For i = 1 To 10
a(i) = Int(Rnd * 50)
s = s & " " & a(i)
If a(i) > 7 And a(i) < 20 Then
p = p * a(i)
n = n + 1
End If
Next i
s = s & Chr(13) & "Количество элементов: " & n & Chr(13) & "Их произведение: " & p
MsgBox (s)
End Sub