hdu 1249 三角形

三角形

Time Limit: 2000/1000 MS (Java/Others)    

Memory Limit: 65536/32768 K (Java/Others)

Problem Description

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

Input

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

Output

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

Sample Input

2

1

2

Sample Output

2

8

 找规律。。。

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

对于直线的问题,递推式是f(n)=f(n-1)+n,即从n-1条直线,变成n条直线,多了n块。

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

所以,一个三角形能分成2个区域,两个三角形可以分成8个区域(一个三角形的一边与另一个三角形的两边相交,其实就是六芒星QAQ。六芒星本身相交出来的是6个角, 在加上中心和外部共是8个。)三个三角形的话是20个。

f(n) = 3 *2*(n - 1) +  f(n - 1);

f(1) = 2;

#include <bits/stdc++.h>

using namespace std;

int main(){
    ios::sync_with_stdio(0);
    int t, n;
    int a[10010];
    cin >> t;
    a[1] = 2;
    for(int i = 2; i <= 10000; i++)   a[i] = 3*2*(i - 1) + a[i - 1];
    while(t--){
        cin >> n;
        cout << a[n] << endl;
    }
    return 0;
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值