这道题的话其实就是按照题目条件直接给 p 条直线先相交到一起,然后剩下那 n-p 条直线加上去每条线全都不跟前面的直线平行。
前面 p 条直线很简单,直接产生 p 个区域就行了。后面 n-p 条怎么办呢?
假设 p 为 2,然后 n 为 4,根据上面我的描述作图……(懒得放图)
我们就可以得到一个很关键的东西:把第 n-p 条直线加上时,我们可以新得到 p+1 个区域;把第 n-p+1 条直线加上时,我们可以得到 p+2 个新区域……
然后这道题直接写一个循环秒了!
上代码(注释就不写了,上文已经写得很清楚了):
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long n,p;
cin>>n>>p;
// if(n==p)
// {
// cout<<n*2;
// }
// else
// {
long long ans=p*2;
long long plus1=p+1;
long long plus2=1;
for(long long i=p+1;i<=n;i++)
{
ans+=plus1;
plus1++;
}
cout<<ans;
// }
return 0;
}