您的位置:首页 > 其它

HDU - 1249 三角形(平面划分)

2016-11-11 22:57 302 查看
题目:

Description

用N个三角形最多可以把平面分成几个区域? 

Input

输入数据的第一行是一个正整数T(1<=T<=10000),表示测试数据的数量.然后是T组测试数据,每组测试数据只包含一个正整数N(1<=N<=10000).

Output

对于每组测试数据,请输出题目中要求的结果. 

Sample Input

2
1
2


Sample Output

2
8


解释一下网上到处飞的递推式f(n)=f(n-1)+(n-1)*6是怎么来的。

这个问题其实和n条直线可以把平面分成多少个部分是差不多一样的。

对于直线的问题,递推式是f(n)=f(n-1)+n

也就是说,从n-1条直线,变成n条直线,多了n块。

为什么就刚好是n呢?因为,一条直线可以被n-1条直线分成n段,而每一段,都恰好对应着从n-1条直线变成n条直线时会有1块变成2块,于是整体增加了n块。

对于三角形的问题,道理是一样的。

一个三角形(注意,这里指的是三条边构成的曲线)可以被n-1个三角形分成(n-1)*6段,于是便得到了递推式。

所以f(n)=3 * n*(n - 1) + 2

代码:

#include<iostream>
using namespace std;

int main()
{
int k, n;
cin >> k;
while (k--)
{
cin >> n;
cout << 3 * n*(n - 1) + 2 << endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: