1. 程式人生 > >CSU - 2059 Water Problem(Z線分割平面)

CSU - 2059 Water Problem(Z線分割平面)

pre fin 兩個 定義 ali algorithm mat height 個數字

一條‘Z’形線可以將平面分為兩個區域,那麽由N條Z形線所定義的區域的最大個數是多少呢?每條Z形線由兩條平行的無限半直線和一條直線段組成

Input

首先輸入一個數字T(T<100),代表有T次詢問 每次詢問輸入一個數字N(N<1e8),代表有N條Z形線

Output

對於每次詢問,在一行輸出N條‘Z’形線所能劃分的區域的最大個數為多少

Sample Input

2
1
2

Sample Output

2
12

Hint

技術分享圖片

分析:

首先考慮一個類似的問題:

有N組直線,每組都由3條平行的直線構成,3條直線的間距可以調整。

那麽N組直線最多劃分出多少個區域?

這個問題就很容易求出來,3n(3n-1)/2+1

本題的答案,就是把每組3條平行直線變成Z,也就是在3n(3n-1)/2+1的基礎上再減2n即可

所以:(9*n*n-7*n+2)/2

code:

#include<stdio.h>
#include<algorithm>
#include<memory.h>
#include<math.h>
using namespace std;
typedef long long LL;
#define INF 0x3f3f3f3f
#define max_v 1005
int main()
{
    int t;
    scanf("%d",&t);
    LL n;
    
while(t--) { scanf("%lld",&n); printf("%lld\n",(9*n*n-7*n+2)/2); } return 0; }

CSU - 2059 Water Problem(Z線分割平面)