Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/26: Рейтинг темы: голосов - 26, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 15.10.2019
Сообщений: 7

Сумма последовательности

15.10.2019, 16:12. Показов 5567. Ответов 13

Студворк — интернет-сервис помощи студентам
Гертруда имеет n тарелок. И хочет разбить их все. По одной. Но тарелки бьются очень звонко. Она опасается, что повредит слух.

Известно, что сила звона первой разбитой тарелки будет равна a1. Сила звона каждой последующей разбитой тарелки будет в b раз больше силы звона предыдущей. То есть сила звона i-ой (i>1) разбитой тарелки будет равна ai=ai−1⋅b.

Гертруда знает максимальное суммарное значение сил звона MAX, которое могут выдержать её уши, и желает максимально насладиться звуками бьющейся посуды.

Помогите Гертруде, найдите максимальное количество тарелок, которые она может разбить, не повредив слух. И побыстрее.

Формат входных данных

В первой строке вводятся четыре целых числа n, a1, b, MAX (1≤n,MAX≤10^1000,1≤a1,b≤10).

Формат выходных данных

Выведите максимальное количество тарелок.

Пояснение к примеру

Если Гертруда разобьёт одну тарелку, то суммарное значение сил звона будет равно a1=1.

Если разобьёт две тарелки, то суммарное значение будет равно a1+a2=1+2=3.

Если разобьёт три, то – a1+a2+a3=1+2+4=7.

Sample Input:
10 1 2 4

Sample Output:
2

Напишите программу. Тестируется через stdin → stdout
Time Limit: 3 секунды
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.10.2019, 16:12
Ответы с готовыми решениями:

Сумма всех отрицательных чисел последовательности и максимальное число в последовательности
На обработку поступает последовательность из целых чисел (признак окончания ввода – слово «стоп» или «stop»). Нужно написать программу,...

Сумма последовательности
Два вопроса: 1. Надо ли как-то обрабатывать B-2, B-1, B? Ведь там, по сути, выходит аналогичная сумма последовательности. Т.е в работу...

Сумма последовательности
Имплеминтировать функцию series(n), которая возвращает (с помощью return!) сумма последовательности чисел от 1 до n (включая n), которая...

13
1 / 1 / 1
Регистрация: 16.10.2019
Сообщений: 3
16.10.2019, 13:06
Лучший ответ Сообщение было отмечено mik-a-el как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <math.h>
using namespace std;
 
int main() {
int a, b;
long long n, m, k;
cin >> n >> a >> b >> m;
 
if(b==1)
k=m/a;
else
k = (long long)(log(m*(b-1)/a + 1)/log(b));
if (n<k) k=n;
cout << k;
 
return 0;
}
Добавлено через 2 минуты
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
strr = input()
strr = strr.split(' ')
n = int(strr[0])
a1 = int(strr[1])
b = int(strr[2])
maxx = int(strr[3])
 
k = 0 #макс, кол-во тарелок
 
while maxx > 0:
    if maxx - a1 >= 0:
        k+= 1
    maxx -= a1
    a1 *= b
 
if k > n:
    k = n
 
print(k)
1
0 / 0 / 0
Регистрация: 17.10.2019
Сообщений: 21
17.10.2019, 12:21
Никто случайно не сможет подсказать как можно ускорить выполнение этого кода?
0
5037 / 1064 / 149
Регистрация: 29.01.2013
Сообщений: 6,214
17.10.2019, 12:36
lawers1, переписать на c++
0
0 / 0 / 0
Регистрация: 17.10.2019
Сообщений: 21
17.10.2019, 12:42
Alli_Lupin, Вы не совсем поняли вопрос, это задача с олимпиады и там для python ограничения по времени выполнения 3 секунды; С++ 1 секунда
0
5037 / 1064 / 149
Регистрация: 29.01.2013
Сообщений: 6,214
17.10.2019, 14:06
lawers1, и эта задача не выполняется за 3 секунды? А за сколько выполняется?
0
0 / 0 / 0
Регистрация: 17.10.2019
Сообщений: 21
17.10.2019, 14:17
точное время не знаю, знаю только что больше 3, но в программе для тестирование
Формат входных данных

В первой строке вводятся четыре целых числа n, a1, b, MAX (1≤n,MAX≤101000,1≤a1,b≤10).

а так я уже сделал свой код
Python
1
2
3
4
5
6
7
8
9
10
11
12
n, a ,b,mx =map(int, input().split())
if b==1:
    print(min(n,mx//a))
else:
    cnt = 0
    for ans in range (n + 1):
        cnt+=a
        a=a*b
        if cnt>mx:
            print(ans)
            exit()
    print(n)
0
5037 / 1064 / 149
Регистрация: 29.01.2013
Сообщений: 6,214
17.10.2019, 14:57
lawers1, вообще, в python скорость сильно зависит от интерпретатора. Одно дело запускать код через python, другое - через pypy.
0
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
17.10.2019, 14:57
lawers1, почему exit(), а не break?
0
0 / 0 / 0
Регистрация: 17.10.2019
Сообщений: 21
17.10.2019, 15:14
Потому что если будет break то в ответ пойдет значение из цикла и значения n (в двух разных строчках), а если exit, то программа закрывается и последняя строчка(print(n)) выполняться не будет(в результате одна строчка ответа), а так как на олимпиаде проверку кода выполняет программа то можно не обращать внимания как с этим кодом работать человеку, именно по-этому exit
0
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
17.10.2019, 15:31
lawers1, а если написать n=ans перед break?
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
17.10.2019, 16:57
Цитата Сообщение от Temchik16 Посмотреть сообщение
1≤n,MAX≤10^1000
Тут чистая математика, перебором не отделаешься.

Добавлено через 20 минут
Обычный бинарный поиск по ответу:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
n, a1, b, MAX = map(int, input().split())
 
 
def s(k):
    return a1 * (1 - b ** k) // (1 - b)
 
 
l, r = -1, n
while l + 1 < r:
    m = (l + r) // 2
    if s(m) <= MAX:
        l = m
    else:
        r = m
print(l)
0
0 / 0 / 0
Регистрация: 17.10.2019
Сообщений: 21
17.10.2019, 22:13
ioprst, как по мне это лишнее усложнение, а также повторюсь еще раз эта задача, которую мы сейчас обсуждаем была на олимпиаде НТИ которая только сегодня закончилась и в вашем варианте мы все равно получим два ответа, только уже одинаковых и именно благодаря этому второму ответу получим 0 баллов за правильно решенную задачу

Добавлено через 2 минуты
Arsegg, А вы смотрели среднее время выполнения алгоритма?
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
17.10.2019, 22:16
lawers1, логарифм
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.10.2019, 22:16
Помогаю со студенческими работами здесь

Сумма последовательности (рекурсия)
Добрый день. Помогите решить задачу с помощью рекурсии. Задача Дана последовательность чисел, завершающаяся числом 0. Найдите сумму...

Сумма положительных членов последовательности
С клавиатуры вводится целое число N - количество чисел, которые будут вводиться далее. Затем вводится N штук целых чисел. Найдите...

Накапливающаяся сумма элементов последовательности
Добрый день у нас тут небольшой курс программирования на питоне и я не знаю его совсем. помогите решить задачку Задано целое число n,...

Сумма предыдущего и последующего элемента в последовательности
Считать строку из чисел, вывести на экран Сумму предыдущего и последующего (для первого элемента предыдущим является последний. Для...

Сколько членов последовательности нужно сложить, чтобы сумма превысила заданное число
Имеется последовательность 1, 1/2, 1/3, 1/4 и т. д.  Напишите программу, которая определяет, сколько членов последовательности нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru