HDU1249——三角形

来源:互联网 发布:给淘宝刷好评怎么做 编辑:程序博客网 时间:2024/04/26 01:22

三角形

Problem Description:http://acm.hdu.edu.cn/showproblem.php?pid=1249
用N个三角形最多可以把平面分成几个区域?
 
Input
输入数据的第一行是一个正整数T(1<=T<=10000),表示测试数据的数量.然后是T组测试数据,每组测试数据只包含一个正整数N(1<=N<=10000).
 
Output
对于每组测试数据,请输出题目中要求的结果.
 
Sample Input
212
 
Sample Output
28
 
题目分析:当已经有k-1个三角形时,加入一个三角形,每一条边穿过k-1个三角形的其中一角,则已有的k-1个三角形的每一个角都被分成了k-1个,因为每加入一个三角形,原来已有的三角形的每一个角都会被多分成一份。而新加入的三角形的一角,被k-1个角中的每两个角分割出一个新三角形(共k-2个),加上角本身的大区域,所以一角被分成了k-1份。这时图中有k个三角形,每个三角形3个角,每个角被分成了k-1份,故一共是3*n*(n-1)份,加上三角形中心的公共部分和三角形以外的区域,一共是3*n*(n-1)+2个区域。
如图:画得不好啦~不过可以自己画画,帮助理解。

有了这个公式,代码那就是小菜一碟啦~
#include<stdio.h>void main(){int n;int t;int ans;scanf("%d", &t);while(t--){scanf("%d",&n);ans = 3 * n * (n - 1) + 2;printf("%d\n", ans);}}


原创粉丝点击