Haskell має цю акуратну (-видовий) особливість, де ви можете дати їй три числа, і він може зробити з них арифметичну послідовність. Наприклад, [1, 3..27]
еквівалентно [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27]
.
Це здорово, і всі, крім арифметичних послідовностей, досить обмежуючі. Доповнення, pfft . Множення - це місце. Чи не було б крутіше, якби це робило геометричні послідовності, як [1, 3..27]
повернення [1, 3, 9, 27]
?
Виклик
Напишіть програму / функцію, яка приймає три натуральних цілих числа a , b і c, і виводить, де x - найбільше ціле число ≤ c, яке може бути представлене як де n - додатне ціле число.[a, b, b × (b ÷ a), b × (b ÷ a)2, ..., x]
b × (b ÷ a)n
Тобто вихід повинен бути r таким, щоб:
r0 = a
r1 = b
rn = b × (b ÷ a)n-1
rlast = greatest integer ≤ c that can be represented as b × (b ÷ a)n
where n is a positive integer
Технічні умови
- Застосовуються стандартні правила вводу / виводу .
- Стандартні лазівки будуть заборонені .
- b завжди буде ділитися на a .
- a < b ≤ c
- Ця проблема полягає не в пошуку найкоротшого підходу на всіх мовах, а в пошуку найкоротшого підходу в кожній мові .
- Ваш код буде набраний у байтах , як правило, в кодуванні UTF-8, якщо не вказано інше.
- Вбудовані функції (у Mathematica може бути одна: P), які обчислюють цю послідовність, дозволені, але включається рішення, яке не покладається на вбудований.
- Пояснення навіть для "практичних" мов заохочуються .
Тестові справи
a b c r
1 2 11 [1, 2, 4, 8]
2 6 100 [2, 6, 18, 54]
3 12 57 [3, 12, 48]
4 20 253 [4, 20, 100]
5 25 625 [5, 25, 125, 625]
6 42 42 [6, 42]
У кількох кращих форматах:
1 2 11
2 6 100
3 12 57
4 20 253
5 25 625
6 42 42
1, 2, 11
2, 6, 100
3, 12, 57
4, 20, 253
5, 25, 625
6, 42, 42