http://acm.hdu.edu.cn/showproblem.php?pid=1466
N条直线的交点方案数 = c 条直线交叉的交点数与(N-c)条平行线 + c 条直线本身的交点方案 = (N - c) * c + c 条直线之间的交点数。
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; int dp[][]; void inti()
{
for(int i=; i<=; i++)
{
for(int j=; j<=; j++)
dp[i][j]=;
}
for(int i=; i<=; i++)
{
dp[i][]=;
for(int j=; j<=i; j++)
{
for(int k=; k<=j*(j-)/; k++)
{
dp[i][(i-j)*j+dp[j][k]*k]=;
}
}
}
} int main()
{
int n;
inti();
while(scanf("%d",&n)!=EOF)
{
printf("");
for(int i=; i<=; i++)
{
if(dp[n][i])
{
printf(" %d",i);
}
}
printf("\n");
}
return ;
}