Задача
Папа Карло подарил Буратино [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 18 19 20 |
import java.io.*; import java.util.Scanner; class Main { public static void main (String[] args) throws java.lang.Exception { Scanner in = new Scanner(System.in); long n = in.nextLong(); long x = 1; long k = 1; long s = 1; while (s<n) { k++; x = x*2 + k; s = s + x; } System.out.print(k); } } |
Решение задачи
Для начала найдём формулу, по которому папа Карло дарит, а Буратино — складывает в банку доллары: [latex]x=2\cdot x+k[/latex].
А теперь установим допустимый предел суммы долларов в банке и начальные условия: [latex]s<n[/latex] и [latex]x=1[/latex], [latex]k=1[/latex], [latex]s=1[/latex].