- 题意:
输入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,转载请注明来源!