Task 100_1. Овощная нарезка
UniLecsЗадача: вам даны N нарезанных колечек овощей: помидора (П) и огурца (О) разложенных на тарелке. В помидорах и огурцах вы не ограничены, поэтому любое нарезанное колечко может быть как огурцом так и помидором. Вам необходимо посчитать кол-во различных вариантов нарезок разложенных на тарелке. При сравнении тарелку можно поворачивать по кругу.
Входные данные: N - кол-во нарезанных колечек, где N больше 0 и меньше 100000
Вывод: кол-во различных вариантов нарезок разложенных на тарелке.
Пример: N = 3
Answer = 4.
Реализация:
По 2 балла получают:
- @tvolf, PHP
https://gist.github.com/tvolf/8f8570487771de0f5abe61165876df4c
2. @rustem_b, F#
https://gist.github.com/RustemB/9e1f5f9fd24f594d09fa9cebf2905393
Test:
https://dotnetfiddle.net/cE1cO6
3. @mikhail_01, Python - 3 балла за 2 решения, комментарии в gist файле
https://gist.github.com/mikhail-01/0864d3c63fd9f81f2e5ea8a8e197e40b
4. @rulikkk, JS
https://repl.it/@rustemmustafin/UniLecs100
5. @LostInKadath, Python - Смотри разбор в gist файлах
https://gist.github.com/LostInKadath/2ce584c29c651fcf37afd40e0eead8fc
6. @jinxonik, Python, Delphi - 3 балла за подробный разбор, два решения на Python, Delphi с учетом длинной арифметики. Супер!
Разбор:
http://telegra.ph/Reshenie-zadachi-ovoshchnaya-narezka-06-07
Source code, Python:
https://gist.github.com/jin-x/f83a7bad0569d0bb7ef3b3becbb4d030
Source code, Delphi:
https://gist.github.com/jin-x/a6b97330d027471d46556d6ead42b7bf
Test:
https://repl.it/repls/AdmiredLimeCloudcomputing
7. @dbond762, Python, GO
https://gist.github.com/dbond762/3635228f571527daa1f3f3c4a03abe10
Test Python:
https://repl.it/repls/SoggyRosybrownNetworking
Test Go:
https://play.golang.org/p/cN_i5dDJNUj
8. Антон, Rust
https://gist.github.com/AnthonyMikh/fbe992fa0058a1f8611ccdd150b5730f
Test:
http://play.rust-lang.org/?gist=d87772b20080b4b869f1a77a4c31dec9&version=stable&mode=debug
9. @wi34rd, Python - довольно оригинальный подход к решению задачи, цитирую:
"Есть такой замечательный сайт — энциклопедия последовательностей (OEIS). Так вот, я вручную посчитал количество комбинаций для первых значений и вбил результаты на этом сайте, он мне и дал название последовательности (задачи). По ней я вышел на статью в википедии, в которой есть формула, по которой я и написал решение. Сам я в комбинаторике к сожалению не силен."
https://gist.github.com/wi34rd/80fbb083c79b6c1ced78a75a6f6297ef
1 балл:
10. Aleksei Kolosov, JS - алгоритм не работает для больших чисел (>1000)
https://gist.github.com/KolosovAO/c83deeeb22cb1caa4be62bd0d3539715
11. @httphate, Python - также алгоритм не работает при размерности больше 1000.
https://gist.github.com/504f383cbaee845efd26f1b0702d898a/af4290b7700df94058480f020d4d5b13