1. 程式人生 > >Parallel and Perpendicular

Parallel and Perpendicular

col margin 存在 printf pri 特殊情況 特殊 code post

題目鏈接

  • 題意:
    輸入n,求正n邊形中的對角線1和對角線2的個數(對角線1:至少與其它一個對角線平行;對角線2:至少與其它一個對角線垂直)。對角線不能是多邊形的邊
    (4 ≤ n ≤ 10e5)
  • 分析:
    思路題。無論是幾邊形,兩個平行邊中間所夾的兩側的邊數必須是同樣的。也就是說兩個端點朝著一個方向移動若幹個短點後能夠得到還有一條平行邊。

    也就是說,多邊形的每一條邊都存在平行便(6邊形的時候有一點特殊情況單獨處理)
    垂直比較麻煩:對於n是偶數的情況,能夠得到,每一個點的n-3條邊都是對角線2(n為偶數的時候,隨意一條對角線一定將原圖形分成左右兩個對稱的圖形)。n為奇數時候,沒有對角線2(僅僅能是推測)

int a[2][110];
int main()
{
    int n;
    a[0][4] = 0;
    a[0][5] = 0;
    a[0][6] = 6;
    a[1][4] = 2;
    a[1][5] = 0;
    a[1][6] = 9;
    while (~RI(n))
    {
        if (n <= 6)
        {
            printf("%d %d\n", a[0][n], a[1][n]);
        }
        else
        {
            cout << 1LL * (n - 3) * n / 2 << ‘ ‘;
            if (n & 1) cout << 0 << endl;
            else cout << 1LL * (n - 3) * n / 2 << endl;
        }
    }
    return 0;
}


Parallel and Perpendicular