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


转载于:https://www.cnblogs.com/ysh-blog/archive/2012/05/08/2489434.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值