ベルヌーイ数(具体的には、第二のベルヌーイ数)は、次の再帰的定義によって定義されます。
どこ意味の組み合わせを。
m
入力として負でない整数を指定すると、10進数表現またはm
2番目のベルヌーイ数の小数部を出力します。10進表現を出力する場合、少なくとも6桁の小数点(小数点以下の桁)の精度が必要であり、小数点以下6桁に丸めたときに正確でなければなりません。たとえばm = 2
、0.166666523
はに丸められるため、for は許容され0.166667
ます。0.166666389
はに丸められるため、受け入れられません0.166666
。末尾のゼロは省略できます。10進表現には科学表記法を使用できます。
以下は、m
小数点以下6桁に丸められた科学表記法で、最大60を含む小数部の入力と期待される出力です。
0 -> 1.000000e+00 (1/1)
1 -> 5.000000e-01 (1/2)
2 -> 1.666667e-01 (1/6)
3 -> 0.000000e+00 (0/1)
4 -> -3.333333e-02 (-1/30)
5 -> 0.000000e+00 (0/1)
6 -> 2.380952e-02 (1/42)
7 -> 0.000000e+00 (0/1)
8 -> -3.333333e-02 (-1/30)
9 -> 0.000000e+00 (0/1)
10 -> 7.575758e-02 (5/66)
11 -> 0.000000e+00 (0/1)
12 -> -2.531136e-01 (-691/2730)
13 -> 0.000000e+00 (0/1)
14 -> 1.166667e+00 (7/6)
15 -> 0.000000e+00 (0/1)
16 -> -7.092157e+00 (-3617/510)
17 -> 0.000000e+00 (0/1)
18 -> 5.497118e+01 (43867/798)
19 -> 0.000000e+00 (0/1)
20 -> -5.291242e+02 (-174611/330)
21 -> 0.000000e+00 (0/1)
22 -> 6.192123e+03 (854513/138)
23 -> 0.000000e+00 (0/1)
24 -> -8.658025e+04 (-236364091/2730)
25 -> 0.000000e+00 (0/1)
26 -> 1.425517e+06 (8553103/6)
27 -> 0.000000e+00 (0/1)
28 -> -2.729823e+07 (-23749461029/870)
29 -> 0.000000e+00 (0/1)
30 -> 6.015809e+08 (8615841276005/14322)
31 -> 0.000000e+00 (0/1)
32 -> -1.511632e+10 (-7709321041217/510)
33 -> 0.000000e+00 (0/1)
34 -> 4.296146e+11 (2577687858367/6)
35 -> 0.000000e+00 (0/1)
36 -> -1.371166e+13 (-26315271553053477373/1919190)
37 -> 0.000000e+00 (0/1)
38 -> 4.883323e+14 (2929993913841559/6)
39 -> 0.000000e+00 (0/1)
40 -> -1.929658e+16 (-261082718496449122051/13530)
41 -> 0.000000e+00 (0/1)
42 -> 8.416930e+17 (1520097643918070802691/1806)
43 -> 0.000000e+00 (0/1)
44 -> -4.033807e+19 (-27833269579301024235023/690)
45 -> 0.000000e+00 (0/1)
46 -> 2.115075e+21 (596451111593912163277961/282)
47 -> 0.000000e+00 (0/1)
48 -> -1.208663e+23 (-5609403368997817686249127547/46410)
49 -> 0.000000e+00 (0/1)
50 -> 7.500867e+24 (495057205241079648212477525/66)
51 -> 0.000000e+00 (0/1)
52 -> -5.038778e+26 (-801165718135489957347924991853/1590)
53 -> 0.000000e+00 (0/1)
54 -> 3.652878e+28 (29149963634884862421418123812691/798)
55 -> 0.000000e+00 (0/1)
56 -> -2.849877e+30 (-2479392929313226753685415739663229/870)
57 -> 0.000000e+00 (0/1)
58 -> 2.386543e+32 (84483613348880041862046775994036021/354)
59 -> 0.000000e+00 (0/1)
60 -> -2.139995e+34 (-1215233140483755572040304994079820246041491/56786730)
リファレンス実装(Python 3):
def factorial(n):
if n < 1:
return 1
else:
return n * factorial(n - 1)
def combination(m,k):
if k <= m:
return factorial(m)/(factorial(k) * factorial(m - k))
else:
return 0
def Bernoulli(m):
if m == 0:
return 1
else:
t = 0
for k in range(0, m):
t += combination(m, k) * Bernoulli(k) / (m - k + 1)
return 1 - t
ルール
- これはcode-golfなので、バイト単位の最短コードが優先されます
- ベルヌーイ数またはベルヌーイ多項式のいずれかのタイプを計算する、組み込みまたは外部ライブラリに含まれる関数を使用することはできません。
- 答えは、60までのすべての入力に対して正しい出力を提供する必要があります。
リーダーボード
この投稿の下部にあるスタックスニペットは、a)言語ごとの最短ソリューションのリストとして、およびb)リーダーボード全体としての回答からリーダーボードを生成します。
回答が表示されるようにするには、次のマークダウンテンプレートを使用して、見出しから回答を開始してください。
## Language Name, N bytes
N
提出物のサイズはどこですか。スコアを改善する場合、古いスコアを打つことで見出しに残すことができます。例えば:
## Ruby, <s>104</s> <s>101</s> 96 bytes
ヘッダーに複数の数字を含める場合(たとえば、スコアが2つのファイルの合計であるか、インタープリターフラグペナルティーを個別にリストする場合)、実際のスコアがヘッダーの最後の数字であることを確認します。
## Perl, 43 + 2 (-p flag) = 45 bytes
言語名をリンクにして、スニペットに表示することもできます。
## [><>](http://esolangs.org/wiki/Fish), 121 bytes