1. 程式人生 > >sinceirt 被打臉的瀟灑哥(規律題型)

sinceirt 被打臉的瀟灑哥(規律題型)

連結:https://ac.nowcoder.com/acm/contest/318/M
來源:牛客網

題目描述
“畫個圈圈詛咒你!”
在一次青青草原ACM個人賽中,瀟灑哥被喜洋洋以30s罰時壓制,委屈的當了個第二。瀟灑哥蹲在角落說出了他的口頭禪,並畫起了圈圈。
突然,他想出了一個有趣的題目,跑去給喜洋洋做。喜洋洋看到題目後懵逼了,但是看到瀟灑哥臉上欠揍的笑容就不爽,暗想一定要做出來狠狠的打瀟灑哥的臉。
於是,他以上廁所為名義跑出來用手機把題目發給了你,希望你能幫你做出來讓他可以嘲諷瀟灑哥。
你收到的題目如下:
平面上有n個圓,求使這n個圓兩兩相交(即每兩個圓之間恰好有兩個交點)後最多能把平面劃分成多少個區域。

輸入描述:
一個正整數t,表示有t(1≤t≤100)組資料。
接下來t行,每行一個整數n(0≤n≤1000),代表平面內圓的個數。
輸出描述:
輸出共t行。每行一個正整數,表示對應的n個圓將該平面劃分成的最大的區域數。
示例1
輸入
複製
3
1
2
3
輸出
複製
2
4
8
說明
第一個樣例,平面只有一個圓,此時將平面劃分成圓內和圓外兩個區域;
第二個樣例,平面上有兩個圓,兩圓相交可以將平面劃分成四個區域(見下圖)。
在這裡插入圖片描述

規律題型
f[n] = n * n - n + 2
特判 n == 0, f[0] = 1

#include <stdio.h>
typedef long long
ll; int main() { ll t, x; scanf("%lld", &t); while (t--) { scanf("%lld", &x); if (x == 0) printf("1\n"); else printf("%lld\n", x*x-x+2); } return 0; }