Answers:
我的第一个真正的渴望程序!实际上,我做了一点打高尔夫球,使用someday
代替,wait for
因为第一次打高尔夫球的长度较短。
if only <stdio.h> were included...
if only int f were 1...
if only int N were 0...
wish for "%d",&N upon a star
if only int i were 0...
if only double e were 0...
someday i will be N...
if only e were e+1./f...
if only i were i+1...
if only f were f*i...
*sigh*
wish "%f\n",e upon a star
if wishes were horses...
<stdio.h>
someday i were N...
工作,而不是someday i will be N...
?
Ans
不是有效的输入格式,因此仅15字节版本有效。
Ans
一直是PPCG的默认输入格式(查看我以前的TI答案),更多的人同意而不是不同意,因此不要欺负您更改答案。
[d1-d1<f*]sf[dlfx1r/r1-d1<e+]se1?dk1-d1<e+p
这是该系列的相当直接的翻译。我试图变得更聪明,但这导致了更长的代码。
[d1-d1<f*]sf
一个简单的阶乘函数,n> 0
[dlfx1r/r1-d1<e+]se
对n,...,1执行阶乘; 求和
1?dk1-
用1填充堆栈;接受输入并设置适当的精度
d1<e+
如果输入是0或1,我们可以继续传递,否则计算部分和。
p
打印结果。
前100个扩展:
0
1
2
2.500
2.6666
2.70832
2.716665
2.7180553
2.71825394
2.718278766
2.7182815251
2.71828180110
2.718281826194
2.7182818282857
2.71828182844671
2.718281828458223
2.7182818284589936
2.71828182845904216
2.718281828459045062
2.7182818284590452257
2.71828182845904523484
2.718281828459045235331
2.7182818284590452353584
2.71828182845904523536012
2.718281828459045235360273
2.7182818284590452353602862
2.71828182845904523536028736
2.718281828459045235360287457
2.7182818284590452353602874700
2.71828182845904523536028747123
2.718281828459045235360287471339
2.7182818284590452353602874713514
2.71828182845904523536028747135253
2.718281828459045235360287471352649
2.7182818284590452353602874713526606
2.71828182845904523536028747135266232
2.718281828459045235360287471352662481
2.7182818284590452353602874713526624964
2.71828182845904523536028747135266249759
2.718281828459045235360287471352662497738
2.7182818284590452353602874713526624977552
2.71828182845904523536028747135266249775705
2.718281828459045235360287471352662497757231
2.7182818284590452353602874713526624977572453
2.71828182845904523536028747135266249775724691
2.718281828459045235360287471352662497757247074
2.7182818284590452353602874713526624977572470919
2.71828182845904523536028747135266249775724709352
2.718281828459045235360287471352662497757247093683
2.7182818284590452353602874713526624977572470936984
2.71828182845904523536028747135266249775724709369978
2.718281828459045235360287471352662497757247093699940
2.7182818284590452353602874713526624977572470936999574
2.71828182845904523536028747135266249775724709369995936
2.718281828459045235360287471352662497757247093699959554
2.7182818284590452353602874713526624977572470936999595729
2.71828182845904523536028747135266249775724709369995957475
2.718281828459045235360287471352662497757247093699959574944
2.7182818284590452353602874713526624977572470936999595749646
2.71828182845904523536028747135266249775724709369995957496673
2.718281828459045235360287471352662497757247093699959574966943
2.7182818284590452353602874713526624977572470936999595749669652
2.71828182845904523536028747135266249775724709369995957496696740
2.718281828459045235360287471352662497757247093699959574966967601
2.7182818284590452353602874713526624977572470936999595749669676254
2.71828182845904523536028747135266249775724709369995957496696762747
2.718281828459045235360287471352662497757247093699959574966967627699
2.7182818284590452353602874713526624977572470936999595749669676277220
2.71828182845904523536028747135266249775724709369995957496696762772386
2.718281828459045235360287471352662497757247093699959574966967627724050
2.7182818284590452353602874713526624977572470936999595749669676277240739
2.71828182845904523536028747135266249775724709369995957496696762772407632
2.718281828459045235360287471352662497757247093699959574966967627724076601
2.7182818284590452353602874713526624977572470936999595749669676277240766277
2.71828182845904523536028747135266249775724709369995957496696762772407663006
2.718281828459045235360287471352662497757247093699959574966967627724076630325
2.7182818284590452353602874713526624977572470936999595749669676277240766303508
2.71828182845904523536028747135266249775724709369995957496696762772407663035328
2.718281828459045235360287471352662497757247093699959574966967627724076630353518
2.7182818284590452353602874713526624977572470936999595749669676277240766303535449
2.71828182845904523536028747135266249775724709369995957496696762772407663035354729
2.718281828459045235360287471352662497757247093699959574966967627724076630353547565
2.7182818284590452353602874713526624977572470936999595749669676277240766303535475915
2.71828182845904523536028747135266249775724709369995957496696762772407663035354759429
2.718281828459045235360287471352662497757247093699959574966967627724076630353547594542
2.7182818284590452353602874713526624977572470936999595749669676277240766303535475945681
2.71828182845904523536028747135266249775724709369995957496696762772407663035354759457111
2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571352
2.7182818284590452353602874713526624977572470936999595749669676277240766303535475945713792
2.71828182845904523536028747135266249775724709369995957496696762772407663035354759457138185
2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382143
2.7182818284590452353602874713526624977572470936999595749669676277240766303535475945713821752
2.71828182845904523536028747135266249775724709369995957496696762772407663035354759457138217826
2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178492
2.7182818284590452353602874713526624977572470936999595749669676277240766303535475945713821785218
2.71828182845904523536028747135266249775724709369995957496696762772407663035354759457138217852481
2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525131
2.7182818284590452353602874713526624977572470936999595749669676277240766303535475945713821785251635
2.71828182845904523536028747135266249775724709369995957496696762772407663035354759457138217852516607
2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166394
使用1000个字词:
2.7182818284590452353602874713526624977572470936999595749669676277240\
766303535475945713821785251664274274663919320030599218174135966290435\
729003342952605956307381323286279434907632338298807531952510190115738\
341879307021540891499348841675092447614606680822648001684774118537423\
454424371075390777449920695517027618386062613313845830007520449338265\
602976067371132007093287091274437470472306969772093101416928368190255\
151086574637721112523897844250569536967707854499699679468644549059879\
316368892300987931277361782154249992295763514822082698951936680331825\
288693984964651058209392398294887933203625094431173012381970684161403\
970198376793206832823764648042953118023287825098194558153017567173613\
320698112509961818815930416903515988885193458072738667385894228792284\
998920868058257492796104841984443634632449684875602336248270419786232\
090021609902353043699418491463140934317381436405462531520961836908887\
070167683964243781405927145635490613031072085103837505101157477041718\
986106873969655212671546889570350116
:Ygl_^s
@Luis建议使用gamma
(Yg
),节省了4个字节
说明
% Implicitly grab input (N)
: % Create an array from 1...N
Yg % Compute factorial(x-1) for each element (x) in the array
l_^ % Take the inverse
s % Sum all elements
% Implicitly display the result
]
1i:Yg/s
对于7个字节
#include <stdio.h>
#include <stdlib.h>
#define z double
z f(z x){z r=1;z n=1;while(x>0){r*=n;n++;x--;}return r;}int main(int argc, char **argv){z e=0;z p=0;z d=0;p=strtod(argv[1],NULL);while(p>0){e+=1.0d/f(d);printf("%.10f\n",e);p--;d++;}return 0;}
取消高尔夫:
/* approximate e */
#include <stdio.h>
#include <stdlib.h>
double fact(double x){
double result = 1;
double num = 1;
while (x > 0){
result *= num;
num++;
x--;
}
return result;
}
int main(int argc, char **argv){
double e = 0;
double precision = 0;
double denom = 0;
precision = strtod(argv[1], NULL);
while (precision > 0){
e += 1.0d / fact(denom);
printf("%.10f\n", e);
precision--;
denom++;
}
return 0;
}
以数字作为参数来确定迭代次数。
int
before main
和the return 0
。另外,如果您替换NULL
为0
,则不需要包含。argc
并argv
可以简化为单字母变量。如果您喜欢在C中打高尔夫球,则可能会发现有关C中打高尔夫球的技巧。
#include <stdio.h>
((scanl(+)0$(1/)<$>scanl(*)1[1..])!!)
不是最短的,但可以说是最漂亮的。
同样由Laikoni提供,这里的解决方案要短2个字节:
sum.(`take`((1/)<$>scanl(*)1[1..]))
λ> let f = ((scanl (+) 0 $ (1/) <$> scanl (*) 1 [1..]) !!)
λ> map f [1..5]
[1.0,2.0,2.5,2.6666666666666665,2.708333333333333]
λ> f 10
2.7182815255731922
λ> f 100
2.7182818284590455
λ> log (f 10)
0.9999998885745155
λ> log (f 100)
1.0
((scanl(+)0$(1/)<$>scanl(*)1[1..])!!)
看起来也不错。
\n->
创建一个前导一个功能。
⍳⊥⊢÷!
使用我在另一个挑战的答案中发现的混合基础技巧。用途⎕IO←0
。
⍳⊥⊢÷! Right argument: n, the number of terms
⊢÷! v: 1÷(n-1)!
⍳ B: The array of 0 .. n-1
⊥ Expand v to length-n array V,
then mixed base conversion of V in base B
Base | Digit | Value
--------------------
0 | v | v×(1×2×..×(n-1)) = 1÷0!
1 | v | v×(2×3×..×(n-1)) = 1÷1!
2 | v | v×(3×..×(n-1)) = 1÷2!
.. | .. | ..
n-2 | v | v×(n-1) = 1÷(n-2)!
n-1 | v | v = 1÷(n-1)!
1÷(n-1)!
数字是多少?您可以将其翻译成J来阐明吗?
import sj224.tflp.math.*;interface U{static void main(String[]a){BigRational r=null,s,t;r=s=t=r.ONE;for(int n=new java.util.Scanner(System.in).nextInt()-1;n-->0;){t=t.multiply(r);s=s.add(t.pow(-1));r=r.add(r.ONE);}System.out.print(s);}}
具有比其他大多数答案更好的防溢性能。对于100个字,结果是
31710869445015912176908843526535027555643447320787267779096898248431156738548305814867560678144006224158425966541000436701189187481211772088720561290395499/11665776930493019085212404857033337561339496033047702683574120486902199999153739451117682997019564785781712240103402969781398151364608000000000000000000000
sum(1/gamma(1:n))
尽管数值精度问题必定会在某个时间点出现,但非常简单。
sum1/k!,0..n
N
的结果,如果使用有限精度的浮点数,结果将相同。这种行为是否可以接受,或者随着N
接近无穷大,结果是否必须逐渐变得更加准确?