#include<iostream>
using namespace std;
#define ll long long
void solve(){
ll n;
cin>>n;
ll ans=0;
if(n==0){
cout<<1<<" ";
}
else{
ans=n*n-n+2;
cout<<ans<<" ";
}
}
int main(){
int t;
cin>>t;
while(t--){
solve();
}
}
设n个圆最多可以把平面分成S(n)个部分。
则可得:
S(1)=2;
S(2)=4;
...
前n-1个圆最多将平面分成S(n-1)个部分,此时,对于第n个圆来说,它与先前的n-1个圆最多有2(n-1)个交点,即此第n个圆最多被这2(n-1)个交点分成2(n-1)条圆弧段。由于每增加一个圆弧段,便可将原来的某个区域分为两个区域(此处最好看图分析)。因此,第n个圆使平面增加了2(n-1)个区域。因此可得递推关系式:
S(n)=S(n-1)+2(n-1), 其中n大于等于2。
由此递推关系式得到:
S(n)=S(1)+2*1+2*2+...+2*(n-1)=2+n*(n-1)=n^2-n+2;
即n个圆最多可以把平面分成(n^2-n+2)个部分。