Орієнтовна константа Франсена-Робінсона


9

З огляду на введення n, виведіть значення константи Франсена-Робінсона з nцифрами після десяткового знака з округленням.

Правила

  • Ви можете припустити, що всі входи є цілими числами від 1 до 60.
  • Ви не можете зберігати пов'язані значення - константа повинна бути обчислена, а не відкликана.
  • Округлення потрібно проводити за такими критеріями:
    • Якщо цифра після кінцевої цифри менше п'яти, підсумкова цифра повинна залишатися такою ж.
    • Якщо цифра після кінцевої цифри більша або дорівнює п’яти, підсумкова цифра повинна бути збільшена на одиницю.
  • Потрібно виводити лише перші n+1цифри.
  • Застосовуються стандартні лазівки.

Випробування

>>> f(0)
3

>>> f(1)
2.8

>>> f(11)
2.80777024203

>>> f(50)
2.80777024202851936522150118655777293230808592093020

>>> f(59)
2.80777024202851936522150118655777293230808592093019829122005

>>> f(60)
2.807770242028519365221501186557772932308085920930198291220055

Що робити, якщо у вас немає підтримки для довільної точності поплавців?
flawr

1
@flawr Я припускаю, що мові доведеться використовувати якусь форму об'єднання рядків або подібну. Інакше це може бути не мовою для цього виклику.
Аддісон Кримп

Шкода, що в основному залишає нас лише жорстке кодування чисел. PS: Чому ви не додасте f(60)до тестових випадків? Таким чином учасникам не доведеться це
доносити

@flawr Hardcoding заборонено правилом 2.
Addison Crump

Очеретні нулі добре?
Мего

Відповіді:


7

Mathematica, 44 39 36 25 UTF-8 байт

  • -5 байт завдяки Sp3000
  • -3 байти завдяки kennytm
  • -11 байт завдяки senegrom

Закреслений 44 все ще регулярний 44 !!

N[∫1/x!{x,-1,∞},#+1]&

Приклад:

f=N[∫1/x!{x,-1,∞},#+1]&
f[2]

Виходи 2.81.

Пояснення

N[               , # + 1] 
  ∫1/x!{x,-1,∞}

Перший крок займає Nумерику решти, з #(перший параметр) + 1 точністю. !(факторіал) робить те, що ви очікували. {x, -1, Infinity}встановлює межі для (дивно відформатованого) інтеграла.


Я не можу перевірити це, тому я припускаю, що це раунди правильно?
Аддісон Кримп

1
@VTCAKAVSMoACE Я перевірив n = 60, він правильно кругляє . (Перша 61цифра - an 8). Ви можете переглянути документи Вольфрама для N.
NoOneIsHere

Coolio. Просто перевіряю.
Аддісон Кримп

Ви, ймовірно, можете використовувати літерал замість Infinity. Я б запропонував розділити на 0, якщо це не призведе ComplexInfinityзамість цього ...
Sp3000

1
спробуйте, N[∫1/x!{x,-1,∞},#+1]&де знаходиться Unicode-F74C; відображається як 𝕕у Mathematica. (зауважте, що місце перед цим &теж не потрібно ...)
senegrom
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.