杨辉三角,是二项式系数在三角形中的一种几何排列,中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。
在欧洲,帕斯卡(1623----1662)在1654年发现这一规律,所以这个表又叫做帕斯卡三角形。
杨辉三角与组合关系密切。
第n行的m个数可表示为 C(n-1,m-1),即为从n-1个不同元素中取m-1个元素的组合数。
第n行的第m个数和第n-m+1个数相等 ,为组合数性质之一。
请输出杨辉三角的第n行,由于杨辉三角n较大时数值较大,会超出整数范围,
因此请将结果的每个数字对1000000007求余。
输入格式
输入一个整数n。
输出格式
输出杨辉三角的第n行,每个数字对1000000007求余。
输入样例
5
输出样例
1 4 6 4 1
之前试了几种队列的方法都超时,似乎是因为oj更新了,网上一些之前的题解也因为超时过不了。
钻研了一下,决定用动态规划和scanf/printf来缩短时间。
#include<cstdio>
using namespace std;
long long a[10000000];
int main()
{
int n;scanf("%d",&n);
a[1]=1;
for(int i=1;i<=n;i++){
for(int j=i;j>=1;j--){
a[j]=(a[j]+a[j-1])%1000000007;
}
}
for(int i=1;i<=n;i++){
printf("%d ",a[i]);
}
return 0;
}