MATL , 13 바이트
y*hZ}Xnd2G3^/
온라인으로 사용해보십시오!
마지막 테스트 사례는 숫자 정밀도로 인해 정확한 정수를 생성하지 않습니다. MATL의 기본 데이터 유형 (double
)은 최대 정확한 정수만 처리 할 수 있습니다 2^53
.
설명
y % Implicitly input [a; b] (col vector) and p (number). Push another copy of [a; b]
% Stack: [a; b], p, [a; b]
* % Multiply the top two elements from the stack
% Stack: [a; b], [a*p; b*p]
h % Concatenate horizontally
% Stack: [a, a*p; b, b*p]
Z} % Split along first dimension
% Stack: [a, a*p], [b, b*p]
Xn % Vectorize nchoosek
% Stack: [nchoosek(a,b), nchoosek(a*p,b*p)]
d % Consecutive differences of array
% Stack: nchoosek(a,b)-nchoosek(a*p,b*p)
2G % Push second input again
% Stack: nchoosek(a,b)-nchoosek(a*p,b*p), p
3^ % Raise to third power
% Stack: nchoosek(a,b)-nchoosek(a*p,b*p), p^3
/ % Divide top two elements from the stack
% Stack: (nchoosek(a,b)-nchoosek(a*p,b*p))/p^3
% Implicitly display
.0
위해 출력이 끝에 있어야한다고 생각합니다 .