$("head").append('')

题解:P15708 [JAG 2023 Summer Camp #2] Umbrella Queries

P15708 [JAG 2023 Summer Camp #2] Umbrella Queries

题目传送门

题目描述

Micchan 注意到,从上方看时,一把雨伞是一个正多边形。因此,她创造了以下问题。

雨伞查询

一个正 \(N\) 边形有 \(N\) 条边和 \(\frac{N(N-1)}{2} - N\) 条对角线。考虑它们的并集,其中包含 \(\frac{N(N-1)}{2}\) 条线段。

有多少对线段满足以下两个条件?

  • 这两条线段有一个公共端点。换句话说,它们在正 \(N\) 边形的某个顶点处有一个公共点。
  • 这两条线段互相垂直。

Micchan 给出了 \(T\) 个上述问题。然而,她的朋友无法解决太多的请求。请代表她回答每个问题。

输入格式

\[\begin{aligned} &T \\ &N_1 \\ &N_2 \\ &\vdots \\ &N_T \end{aligned} \]

输入满足以下约束:

  • 所有输入均为整数。
  • \(1 \leq T \leq 10^5\)
  • \(3 \leq N_i \leq 10^9\)

输出格式

输出 \(T\) 行答案。在第 \(i\) 行,输出当 \(N = N_i\) 时问题的答案。每行末尾请添加换行符。

输入输出样例 #1

输入 #1

3
4
3
1000000000

输出 #1

4
0
499999999000000000

说明/提示

在样例输入 1 中,你只需要计算在正方形的顶点处垂直相交的线段对。

翻译由 DeepSeek V3.2 完成



题解

题意:

\(\qquad\) 寻找正多边形共端点垂直对角线对的对数

解决:

先说结论:

\(\qquad\) 正奇数边形中,不存在共端点的垂直线段,答案为 \(0\)
\(\qquad\) 正偶数边形中,每个顶点有 \(\frac{N}{2}−1\) 对垂直线段,总对数为顶点数乘以单个顶点的贡献,即 \(N×(\frac{N}{2}−1)\)

为什么呢?
\(\qquad\) 设存在满足条件的一组,那么一定有一组是由一条对角线和两条边构成一个三角形,这个三角形中由该对角线参与构成的角的度数为 \(180- \frac{(n-2)*180}{n}=\frac{360}{n}\),另一条对角线又和这条对角线垂直,也就是说,这两条边一定在最中间的那条对角线的两边,也就是说一共有 \(\frac{N}{2}\) 对满足条件的线段。考虑到最中间的对角线只有一个,所以要 \(-1\)。同时有 \(N\) 个边,因此答案见上。
\(\qquad\) 同时,我们用这个思路也可以证明上述构造的第一条边合法时,另一条边一定不在该多边形的端点上。

code:

#include<bits/stdc++.h>
using namespace std;
long long t,n;
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0); 
	cin>>t;
	while(t--){
		cin>>n;
		if(n%2)cout<<"0\n";
		else cout<<1ll*n*(n/2-1)<<"\n";
	}
}
posted @ 2026-03-31 15:53  lain_yc  阅读(6)  评论(0)    收藏  举报
$("head").append('')