3063: 【普及+/提高】【P2789】直线交点数

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:3 解决:2

题目描述

假设平面上有 lns="http://www.w3.org/1998/Math/MathML"> 条直线,且无三线共点,那么这些直线一共能有多少不同的交点数?对于所有数据,满足 lns="http://www.w3.org/1998/Math/MathML">125

输入

一行,一个整数 lns="http://www.w3.org/1998/Math/MathML">,代表有 lns="http://www.w3.org/1998/Math/MathML"> 条直线。

输出

一行,一个整数,表示方案总数。

样例输入 复制

4

样例输出 复制

5

提示

对p条直线分情况讨论平行线的条数,已知在有r条平行线时有(p-r)条线与他们相交于p*(p-r)个交点,再加上对于这p-r个交点的相交组合即可!!!

#include<bits/stdc++.h>
using namespace std;
int n,ans=0;
bool f[10010];
void suv(int p,int m){
        if(p==0) {
            if(!f[m]) 
                ans++; 
                f[m]=1;
        }
        else 
            for(int r=p;r>=1;r--) 
                suv(p-r,r*(p-r)+m);
}
int main(){
    cin>>n;
    suv(n,0);
    cout<<ans;
}