杨辉三角形在5月8日的探讨
杭电2032 题
注意用long long 的格式
尤其是计算中间的量的时候
否则容易溢出;
#include<stdio.h>
long long int fun(int i,int j);
int main()
{
long long int a[34][34];
int i,j,k,n;
for(i=0;i<=30;i++)
{
for(j=0;j<=i;j++)
{
if(j==0){a[i][j]=1;continue;}
a[i][j]=fun(i,j);
}
}
while (scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)
{printf("%lld",a[i][j]);if(j!=i)printf(" ");}
printf("\n");
}
printf("\n");
}
}
long long int fun(int i,int j)
{
int n,m;
long long int sum1=1,sum2=1;
if(j<=i/2) //这一步如果仅小于 就会出现结论的错误!! 反思中 是中间的结果 如 c30 的第三十行
{
for(n=i-j+1;n<=i;n++)
sum1*=n;
for(m=1;m<=j;m++)
sum2*=m;
return sum1/sum2;
}
else {
for(n=j+1;n<=i;n++)
sum1*=n;
for(m=1;m<=i-j;m++)
sum2*=m;
return sum1/sum2;
}
}
上一篇: HDU 1043:八进制数的康托尔展开
推荐阅读