pascal题!莱布尼茨三角形!更好100!急……最好有解释!试题描述 世界上著名的莱布尼茨三角形如图所示,请编程输出图中排在第n行从左边数第m个位置上的数.输入共一行,有二个整数N 和M(N<=15),
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/26 20:07:19
pascal题!莱布尼茨三角形!更好100!急……最好有解释!试题描述 世界上著名的莱布尼茨三角形如图所示,请编程输出图中排在第n行从左边数第m个位置上的数.输入共一行,有二个整数N 和M(N<=15),
pascal题!莱布尼茨三角形!更好100!急……最好有解释!
试题描述
世界上著名的莱布尼茨三角形如图所示,请编程输出图中排在第n行从左边数第m个位置上的数.
输入
共一行,有二个整数N 和M(N<=15),两数间用空格隔开.
输出
共一行,有二个整数,两数间用“/”隔开,表示所求的分数.
输入示例
7 3
输出示例
1/105
pascal题!莱布尼茨三角形!更好100!急……最好有解释!试题描述 世界上著名的莱布尼茨三角形如图所示,请编程输出图中排在第n行从左边数第m个位置上的数.输入共一行,有二个整数N 和M(N<=15),
这题不难啊?
代码见下方:
var a:array[1..15,1..8]of longint;
i,j,m,n:integer;
begin
readln(n,m);
a[1,1]:=1;
for i:=2 to n do
begin
a[i,1]:=i;
for j:=2 to (i+1)div 2 do
a[i,j]:=a[i,j-1]*a[i-1,j-1] div (a[i,j-1]-a[i-1,j-1]);
end;
if m>(n+1)div 2 then m:=n-m+1;
writeln('1/',a[n,m]);
end.
在数组中,a[ i ,j ] 存放的是第 i 行,第 j 个的分母.
由于每行都是对称的,因此对于第 i 行,j 只要循环到 (i+1)div 2 就行了.
莱布尼茨三角形的规律是,上方的数等于下方的两数之和,因此可以用递推求出n行以内的所有元素.
计算每一行的元素,基于以下原理: