Untitled

public
6shootingstar9 May 13, 2025 Never 7
Clone
Markdown paste1.md 38 lines (32 loc) | 1009 Bytes

这道题的话其实就是按照题目条件直接给 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;
}