Mastermate官网 香港|英国|新加坡|澳大利亚|澳门|深圳硕士研究生申请平台

may eigth 杨辉三角

杭电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;
         
         
          }
    
}


posted @ 2012-05-08 01:15  大嘴鸟  阅读(179)  评论(0编辑  收藏  举报
Mastermate官网 香港|英国|新加坡|澳大利亚|澳门|深圳硕士研究生申请平台