Сколько раз будет выполнен этот цикл?
i = 4
while i < 2:
print ( "Привет" )
i += 1
2) Чему будет равна переменная "с" после выполнения этой программы?
a = 22
b = 4
b = a % b
c = a // (b+1)
3) Определите, что будет напечатано в результате работы следующей программы
s = 0
for k in range(14, 19):
s = s + 7
print( s ) ;
4) Чему будет равна переменная "с" после выполнения этой программы
a = 26
b = 6
b = a // b + b
c = a % b + a
5) Какое число нужно написать вместо многоточия, чтобы цикл выполнился ровно 3 раза?
i = ...
while i <= 7 :
print ( "Привет!" )
i += 1
6) Определите , что будет напечатано в результате работы следующей программы
s = 3
for i in range(2, 6) :
s = s + 2*i
print( s ) ;
7) дана программа. Было проведено 10 запусков этой программы, при которых в качестве значений переменных х и у вводились следующие пары чисел: (105, 100);(95, 110);(100, 95);(95, 90);(105, 90);(85 ,110);(100 ,110);(85, 105);(85, 95);(90, 100)
Сколько было запусков, при которых программа напечатала "НЕТ"?
x = int ( input ( ) )
y = int (input ( ) )
if y <= 100 or x > 90:
print ( "ДА" )
else :
print ("НЕТ")
8) Определите значение переменной "а" после выполнения фрагмента программы
a = 10
if a < 5 :
a += 12
else :
a -= 7
9) Дана программа. Было проведено 9 запусков этой программы, при которых в качестве значений переменных s и t вводились следующие пары чисел: (1, 2); (11, 2); (1, 12); (11, 12); (–11, –12); (–11, 12); (–12, 11); (10, 10); (10, 5)Сколько было запусков, при которых программа напечатала «НЕТ»?
s = int ( input ( ) )
t = int ( input ( ) )
if s > 10 or t < 10 :
print ( "ДА")
else :
print ( "НЕТ" )
10) Чему будет равно значение переменной "а" после выполнения этого цикла
i = 2
f = 12
while i < 5 :
a += i
i += 1
ответ:Алгоритм Карацубы — метод быстрого умножения со сложностью вычисления nlog23. В то время, как наивный алгоритм, умножение в столбик, требует n2 операций. Следует заметить, что при длине чисел короче нескольких десятков знаков (точнее определяется экспериментально), быстрее работает обычное умножение.
Представим, что есть два числа A и B длиной n в какой-то системе счисления BASE:
A = an-1an-2...a0
B = bn-1an-2...a0, где a?, b? — значение в соотв. разряде числа.
Каждое из них можно представить в виде суммы их двух частей, половинок длиной m = n / 2 (если n нечетное, то одна часть короче другой на один разряд:
A0 = am-1am-2...a0
A1 = an-1an-2...am
A = A0 + A1 * BASEm
B0 = bm-1bm-2...b0
B1 = bn-1bn-2...bm
B = B0 + B1 * BASEm
Тогда: A * B = ( A0 + A1 * BASEm ) * ( B0 + B1 * BASEm ) = A0 * B0 + A0 * B1 * BASEm + A1 * B0 * BASEm + A1 * B1 * BASE2 * m = A0 * B0 + ( A0 * B1 + A1 * B0 ) * BASEm + A1 * B1 * BASE2 * m
Здесь нужно 4 операции умножения (части формулы * BASE? * m не являются умножением, фактически указывая место записи результата, разряд). Но с другой стороны:
( A0 + A1 ) * ( B0 + B1 ) = A0 * B0 + A0 * B1 + A1 * B0 + A1 * B1
Посмотрев на выделенные части в обоих формулах. После несложных преобразований количество операций умножения можно свести к 3-м, заменив два умножения на одно и несколько операций сложения и вычитания, время выполнения которых на порядок меньше:
A0 * B1 + A1 * B0 = ( A0 + A1 ) * ( B0 + B1 ) — A0 * B0 — A1 * B1
Окончательный вид выражения:
A * B = A0 * B0 + (( A0 + A1 ) * ( B0 + B1 ) — A0 * B0 — A1 * B1 ) * BASEm + A1 * B1 * BASE2 * m
Объяснение: