Description
![Download as PDF Download as PDF](https://icpcarchive.ecs.baylor.edu/components/com_onlinejudge/images/button_pdf.png)
The Rascal Triangle definition is similar to that of the Pascal Triangle. The rows are numbered from the top starting with 0. Each row n contains n + 1 numbers indexed from 0 to n. Using R(n, m) to indicate the index m item in the index n row:
The first and last numbers in each row (which are the same in the top row) are 1:
The interior values are determined by (UpLeftEntry*UpRightEntry + 1)/UpEntry (see the parallelogram in the array below):
![\epsfbox{p5801.eps}](https://icpcarchive.ecs.baylor.edu/external/58/p5801.png)
Write a program which computes R(n, m) the m-th element of the n-th row of the Rascal Triangle.
Input
The first line of input contains a single integer P, ( 1P
1000), which is the number of data sets that follow. Each data set is a single line of input consisting of 3 spaces separated decimal integers. The first integer is data set number, N. The second integer is row numbern, and the third integer is the index m within the row of the entry for which you are to find R(n, m) the Rascal Triangle entry ( 0
m
n
50000).
Output
For each data set there is one line of output. It contains the data set number, N, followed by a single space which is then followed by theRascal Triangle entry R(n, m) accurate to the nearest integer value.
Sample Input
5 1 4 0 2 4 2 3 45678 12345 4 12345 9876 5 34567 11398
Sample Output
1 1 2 5 3 411495886 4 24383845 5 264080263
题型:找规律
题意:给出一个类似于杨辉三角的数塔,最左端和最右端都是1,递推式为
R(n + 1, m + 1) = (R(n, m)*R(n, m + 1) + 1)/R(n - 1, m)
就是这个数等于其上面两个数的积再加1再除以其上面的上面的那个数,for example :(3*3+1)/ 2 = 5。
求出第n行第m个数是什么。
分析:根据递推式来写代码是不能的,会超时。直接求出一个式子直接用就可以了,代码及其简短。
代码:
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
int t,r;
long long n,m,k;
scanf("%d",&t);
while(t--){
scanf("%d%lld%lld",&r,&k,&m);
printf("%d %lld\n",r,1+(k-m)*m);
}
return 0;
}