一个经典C语言编程题的算法解析(等分正三角形后共得多少三角形)

经典C语言编程题解析

将一个正三角形的各边都n等分,过各分点作其它两边的平行线,一共可产生多少个三角形(包括原来的三角形在内)?

解析:不妨设正△ABC的边长为n,首先考虑“头朝上”的三角形,即平行于水平线的那条边在其对角顶点下方的三角形.

边长为1的“头朝上”的三角形有

1+2+…+n = (n(n + 1) / 2)个.

边长为2的“头朝上”的三角形有

1+2+…+(n-1)  =  ((n(n - 1)) / 2)个. 

……

边长为n的“头朝上”的三角形只有1个.

从而,“头朝上”的三角形共有 ((n(n+1)(n+2)) / 6)个.

然后考虑“头朝下”的三角形,即平行于水平线的那条边在其对角顶点上方的三角形.

边长为1的“头朝下”的三角形有

1+2+…+(n-1)=(n(n-1) / 2)个.

边长为2的“头朝下”的三角形有

1+2+…+(n-3)(((n - 3)(n - 2)) / 2)个.

边长为m的“头朝下”的三角形有

=((n - m - 1)(n - m)) / 2)个

故当n为奇数时,“头朝下”的三角形有

=(((n - 1)(n + 1)(2n + 3)) / 24)个.

当n为偶数时,“头朝下”的三角形有

=((n(n + 1)(2n - 1)) / 24)个.

综上所述,一共产生的三角形的个数为

N =((n + 1)(2n^2 + 3n - 1) / 8),n为奇数;

N =  (n(n + 2)(2n + 1)  / 8),n为偶数; 

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值