Стандартна лінійка довжиною n має позначення відстаней у положеннях 0, 1, ..., n (у будь-яких одиницях). У розрідженої лінійки є підмножина цих знаків. Лінійка може виміряти відстань k, якщо вона має позначки в положеннях p і q з p - q = k .
Змагання
Враховуючи додатне ціле число n , виведіть мінімальну кількість знаків, необхідних у розрідженій лінійці довжиною n, щоб вона могла виміряти всі відстані 1, 2, ..., n .
Це OEIS A046693 .
Наприклад, для входу 6 вихідний сигнал є 4. А саме, лінійка з позначками на 0, 1, 4, 6 працює, як 1−0 = 1, 6−4 = 2, 4−1 = 3, 4−0 = 4, 6−1 = 5, і 6−0 = 6.
Додаткові правила
- Алгоритм повинен бути дійсним для довільно великих n . Однак це прийнятно, якщо програма обмежена пам'яттю, часом або типом даних.
- Введення / вихід може бути прийнятий / виготовлений будь-якими розумними способами .
- Програми або функції дозволені на будь- якій мові програмування . Стандартні лазівки заборонені.
- Найкоротший код у байтах виграє.
Тестові кейси
1 -> 2
2 -> 3
3 -> 3
4 -> 4
5 -> 4
6 -> 4
7 -> 5
8 -> 5
9 -> 5
10 -> 6
11 -> 6
12 -> 6
13 -> 6
14 -> 7
15 -> 7
16 -> 7
17 -> 7
18 -> 8
19 -> 8
20 -> 8
21 -> 8
22 -> 8
23 -> 8
24 -> 9
25 -> 9
26 -> 9
27 -> 9
28 -> 9
29 -> 9
30 -> 10
31 -> 10
32 -> 10