题目大意:我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目。比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分,具体如下所示。
解题思路:两个折线最多有四个焦点,那么会产生4+1个新的部分,三个折线最多有8个焦点,会产生8+1个新的部分,因此n个折线,最多有4*(n-1)个焦点,会产生4*(n-1)+1个新的部分,依次类推。
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n;
cin>>n;
while(n--)
{
int m;
cin>>m;
long long int a[10001];
if(m==1)
cout<<2<<endl;
else{
a[1]=2;
for(int i=2;i<=m;i++)
{
a[i]=a[i-1]+4*(i-1)+1;
}
cout<<a[m]<<endl;
}
}
return 0;
}
遇到的问题:随着折线个数增大,把平面分成的部分会越来越多,依次存放的数组要用long long int;