您的位置:首页 > 其它

The Rascal Triangle

2013-07-24 21:48 183 查看
Description





The Rascal Triangle definition is similar to that of the Pascal Triangle. The rows are numbered from the top starting with 0. Each rown contains n +
1 numbers indexed from 0 to n. Using R(n, m) to indicate the index m item in the index n row:

[align=center]R(n, m) = 0 for n < 0 OR m < 0 OR m > n[/align]

The first and last numbers in each row (which are the same in the top row) are 1:

[align=center]R(n, 0) = R(n, n) = 1[/align]

The interior values are determined by (UpLeftEntry*UpRightEntry + 1)/UpEntry (see the parallelogram in the array below):

[align=center]R(n + 1, m + 1) = (R(n, m)*R(n, m + 1) + 1)/R(n - 1, m)[/align]



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, ( 1

P

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


这到题我首先的感觉就想到递归,但再到时间问题和数据太大!这用递归是不能完成这庞大的数据的!!经过苦思冥想,想到退出
公式,即通项!具体通项在代码中:

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <vector>
#include <queue>
#include <cstdio>
#include <cmath>
#include <string>
#include <stack>
#include <cctype>
using namespace std;
int main()
{
int t,n;
long long x,y;
scanf("%d",&t);
while(t--)
{
scanf("%d%lld%lld",&n,&x,&y);
if(x == 0 || x == y || y == 0)
{
printf("%d 1\n",n);
continue;
}

printf("%d %lld\n",n,(x-y)*y+1);
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  The Rascal Triangle