Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

С1 вопрос про программированию

Камила Джамирзе Ученик (130), открыт 1 неделю назад
Алиса играет в "Свина". Правила достаточно просты: нужно загаданное
число N просуммировать K раз так, чтобы сумма складывалась "пирамидным"
способом (n + nn + nnn..., где число слагаемых равно K). Если полученная
сумма больше или равна призовому значению P, то Алиса победила, иначе у
нее есть ровно 3 попытки вытянуть получившуюся сумму таким же способом.
Можно использовать меньшее количество попыток. Ваша задача рассчитать
сумеет ли Алиса победить с первого раза или с использованием
дополнительных попыток.
Формат входных данных. Первый параметр содержит величину N (1 ⩽ N ⩽
9), второй параметр содержит величину K (2⩽ K ⩽ 10), третий параметр
содержит величину P (0⩽ P ⩽ 100000).
Пример:
N = 1
K = 3
P = 1024
Формат выходных данных. Выведите результат – 0, если не сможет
победить и 1 – если сможет победить.
Решение может быть написано на любом языке программирования. При этом
участник сдает решение и пояснительную записку, в которой описано что за
программные средства надо использовать, какие библиотеки надо установить
и как проверяющие должны запустить решение. Решение без пояснительной
записки не будет проверено. Файл с решением и запиской нужно упаковать в
архив и прикрепить в окно проверки.
Вы получите:
- 25 баллов, если решение вашей задачи пройдет все тесты и будет
решено не более чем за 30 минут;
- 15 баллов, если решение вашей задачи пройдет все тесты и будет
решено за 30 минут – 1 час.
Контесты
Пример отображения контеста
Имя Тип Значение
--------------------------------------------------
N Число 1
K Число 3
P Число 1024
Результат: 1
--------------------------------------------------------
Рассмотрим первый набор данных.
Алисе даны К = 3 попытки, нужно набрать число больше, чем Р = 1024.
Посмотрим, получится ли это у нее.
1 + 11 + 111 = 123
123 < 1024 => она не может победить, используя те попытки, которые ей
дали изначально.
Она знает, что, если она не победила, у нее есть 3 резервные попытки.
Продолжаем прибавлять.
123 + 1111(потому что 4 слагаемое, оно должно состоять из четырех
повторяющихся N) = 1234.
1234 > 1024 => Алиса победила, используя свою первую резервную попытку.
Выводим ответ: 1.
Можно решить на любом языке программирования, буду рада если объясните что куда, как и просят в задаче.
1 ответ
Юрий Семыкин Искусственный Интеллект (204843) 1 неделю назад
Надеюсь, решение "прозрачное":
 N,K,P=(int(_) for _ in input('N,K,P=').split()) 
d=10**len(str(N))
s=0
nnn=0
res='не может победить'
for _ in ('сразу, без доп','1й доп. ','2й доп','3й доп'):
for i in range(K):
nnn=nnn*d+N
s +=nnn
if s>=P:
res='может победить c '+_+' попытки'
break
print(res)
Можно улучшить и ускорить, если вы слышали про сумму геометрической и арифметической (тут смесь) прогрессии.
Камила ДжамирзеУченик (130) 3 дня назад
а через вы что запускали?
Юрий Семыкин Искусственный Интеллект (204843) Камила Джамирзе, IDLE (Python 3.12 64-bit)
Похожие вопросы