题目描述
世界上著名的莱布尼茨三角形如图所示,请编程输出图中排在第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])
故直接根据公式输出即可
代码
#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;
}