Задача
Папа Карло подарил Буратино [latex]1[/latex] доллар в его первый день рождения, а экономный Буратино сложил подарок в банку. Каждый последующий год папа Карло удваивал свой предыдущий подарок и прибавлял к нему столько долларов, сколько лет исполнилось Буратино, а тот в свою очередь продолжал складывать баксы в банку. На какой [latex]N[/latex]-й день рождения в банке будет не менее чем [latex]S[/latex] долларов?
Входные данные
Единственное число — значение [latex]S[/latex]. [latex]1 ≤ S ≤ 240[/latex].
Выходные данные
Искомое значение [latex]N[/latex].
Тесты
# | Входные данные | Выходные данные |
---|---|---|
1 | 1 | 1 |
2 | 98 | 5 |
3 | 99 | 5 |
4 | 100 | 6 |
5 | 549755813888 | 38 |
Код
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#include <iostream> using namespace std; int main() { long long n; long long x=1; //подарок папы на данный день рождения long long k=1; //номер дня рождения long long s=1; //сумма, лежащая в банке cin>>n; while (s<n) { k++; x=x*2+k; s=s+x; } cout<<k; return 0; } |
Решение задачи
Для начала найдём формулу, по которому папа Карло дарит, а Буратино — складывает в банку доллары: [latex]x=2\cdot x+k[/latex].
А теперь установим допустимый предел суммы долларов в банке и начальные условия: [latex]s<n[/latex] и [latex]x=1[/latex], [latex]k=1[/latex], [latex]s=1[/latex].
Ссылки
Условие задачи на e-olymp
Код решения на ideone
Исправила, спасибо.
Хорошо.