HDU2050

找规律题。与直线分割平面的求法一样。

)1条直线,将平面分为两个部分
2条直线,较之前增加1条直线,增加1个交点,增加了2个平面部分
3条直线,与之前两条直线均相交,增加2个交点,增加了3个平面部分
4条直线,与之前三条直线均相交,增加3个交点,增加了4个平面部分
......
n条直线,与之前n-1条直线均相交,增加n-1个交点,增加个n个平面部分

所以n条直线分平面的总数为2+(2+3+4+5+6+7+8+ ...n)=1+(1+2+3+4+5+6+7+8+ ...n)=1+[n*(n+1)/2]=(n2+n+2)/2

2)    sum(n)=2+5+9+13+17+21+...+4*n-3=1+1+5+9+13+17+....+4*n-3=1+n*(1+4*n-3)/2=2*n*n+n-1;
*【直线与折线的思想相同】。

   
     
1 #include " iostream "
2   using namespace std;
3 int main()
4 {
5 int i, c,a[ 1000 ],sum;
6 while (cin >> c)
7 {
8 for (i = 0 ;i < c;i ++ )
9 cin >> a[i];
10 for (i = 0 ;i < c;i ++ )
11 if (a[i] > 0 && a[i] <= 10000 )
12 {
13 sum = 2 * a[i] * a[i] - a[i] + 1 ;
14 cout << sum << endl;
15 }
16 }
17 return 0 ;
18 }

 

你可能感兴趣的:(HDU)