题目描述
世界上著名的莱布尼茨三角形如图所示,请编程输出图中排在第n行从左边数第m个位置上的数。
输入
共一行,有二个整数N 和M(N<=15),两数间用空格隔开。
输出
共一行,有二个整数,两数间用"/"隔开,表示所求的分数,行尾没有多余的空格。
样例输入 Copy
7 3
样例输出 Copy
1/105
题意
输出莱布尼茨三角形第n行从左边数第m个位置上的数
分析
通过观察及找规律,得出分母的递推公式
a[i][j] = (a[i - 1][j - 1] * a[i][j - 1]) / (a[i][j - 1] - a[i - 1][j - 1])
故直接根据公式输出即可
代码
cpp
#include<bits/stdc++.h>
using namespace std;
const int N = 15 + 10;
int n,m;
int a[N][N];
int main() {
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
cin >> n >> m;
for(int i = 1;i <= n;i++) a[i][1] = a[1][i] = i;
for(int i = 3;i <= n;i++)
for(int j = 2;j < i;j++)
a[i][j] = (a[i - 1][j - 1] * a[i][j - 1]) / (a[i][j - 1] - a[i - 1][j - 1]);
cout << "1/" << a[n][m];
return 0;
}