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
を本当に示すために、アウトプットは最後にあるべきだと思います。