Даю 100 балів! Будь ласка, виполните на Python
Однажды вы оказались в казино и сразу увидели большую слот-машину, состоящую из N барабанов и N кнопок — по одной напротив каждого барабана. На i -м барабане находились символы строки Si , записанные вдоль барабана. Строка Si состоит только из символов от 0 до 9 , причем каждый символ встречается ровно один раз.
Долго наблюдая за остальными игроками, вы нашли закономерность: если нажать кнопку напротив i -го барабана в момент времени t(t≥0) , то при остановке на нем будет записан (t mod 10)+1 -й символ строки Si.
Используя эту информацию вы решили сорвать джекпот, а именно добиться ситуации, что на все числа на барабанах после остановки будут равны. Однако в каждую секунду вы можете нажимать не более одной кнопки. Найдите минимальное время, за которое вы можете нажать кнопки так, чтобы сорвать джекпот!
Формат входных данных
В первой строке вводится целое число N(2≤N≤100) – число барабанов в машине.
Затем в N строках вводится по одной строке Si длины 10 . Гарантируется, что строка Si состоит только из символов от 0 до 9 , причем каждый символ встречается ровно один раз.
Формат выходных данных
Выведите одно число — минимальное время, за которое вы можете нажать кнопки так, чтобы все барабаны после остановки показали одинаковые числа.
Замечание
В первом примере оптимальной будет следующая стратегия:
В момент времени 0 нажать кнопку у 2 -го барабана. Тогда после остановки на нем будет записан (0 mod 10+1)=1 -й символ S2 , то есть 8
В момент времени 2 нажать кнопку у 3 -го барабана. Тогда после остановки на нем будет записан (2 mod 10+1)=3 -й символ S3 , то есть 8
В момент времени 6 нажать кнопку у 1 -го барабана. Тогда после остановки на нем будет записан (6 mod 10+1)=7 -й символ S1 , то есть 888
Таким образом, за 666 секунд мы добьемся того, чтобы после остановки на всех барабанах было записано число 888 . Можно показать, что этот ответ является оптимальным.
Во втором примере оптимальной будет следующая стратегия:
В момент времени 0 нажать кнопку у 1 -го барабана. Тогда после остановки на нем будет записан (0 mod 10+1)=1 -й символ S1, то есть 9
В момент времени 10 нажать кнопку у 2 -го барабана. Тогда после остановки на нем будет записан (10 mod 10+1)=1 -й символ S2, то есть 9
В момент времени 20 нажать кнопку у 3 -го барабана. Тогда после остановки на нем будет записан (20 mod 10+1)=1-й символ S3, то есть 9
Таким образом, за 20 секунд мы добьемся того, чтобы после остановки на всех барабанах было записано число 9 . Можно показать, что этот ответ является оптимальным. Обратите внимание, что мы не можем нажимать кнопки напротив нескольких барабанов одновременно.
Answers & Comments
Ответ:
import random
import math
limit = 1000
acc = 0
results = []
exp = 1000
for i in range(exp):
color = 0
amount = 10000
max_amount = amount
bid = 1
count = 0
while count < limit and amount > 0 :
amount = amount - bid
next = random.randint(0, 1)
if next == color :
amount = amount + bid + bid
bid = 1
# color = 1 if color == 0 else 0
if amount > max_amount:
max_amount = amount
else :
bid = bid + bid
count = count + 1
acc = acc + max_amount
results.append(max_amount)
print("Exp {}".format(i))
avg = acc / exp
acc = 0
for i in range(len(results)):
acc = acc + math.pow(results[i] - avg, 2)
std = math.sqrt(acc / exp)
print("Average max amount earned {} with standard deviation {}".format(avg, std))
Объяснение:
Python казино