1 条题解
-
0
自动搬运
来自洛谷,原作者为

Thomas_Cat
越学越菜。搬运于
2025-08-24 22:26:07,当前版本为作者最后更新于2020-10-31 18:27:09,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
今日月赛第一题题解:
我们先来观察题目,根据题目中给的这个正方形(如图)我们可以得出结论:

-
这个图必须是一个正方形
-
这个图必须由四部分的比例 组成,否则无效
-
这个图的底是相等的,因为正方形四边边长相等不妨把底边 设为
于是我们得出公式:$S \triangle AED : S \triangle AEB : S \triangle CEB : S \triangle DEC = a \times l : b \times l : c \times l : d \times l$ 。
-
根据上图公式,直接判断即可
接下来来讲一下判断方法和内容:
就拿样例来说:
我们发现,正方形的边长应该是 。
我们就画出一个 的正方形:
紧接着,我们在上面 作图 如上图给出的图片一样,看看能找到多少个:
于是乎我们发现四种情况(下图四个图形为四种情况,并不是四个正方形):

-
我们发现,我们不可能组成一个正方形,因为:
-
我们发现,正方形的边长应该是
我们画出 的正方形,寻找规律:

于是乎我们发现了八种情况。
于是我们发现:
- 当 时,答案为 。
- 当 时,答案为 。
- 当 时,答案为 。
- 当 不构成四边形也就是:
- 时,答案为 。
于是我们得出代码:
#include<iostream> using namespace std; int main(){ int n; cin>>n; for(int i=1;i<=n;i++){ unsigned long long a,b,c,d; cin>>a>>b>>c>>d; if(a==b&&a==c&&a==d&&b==c&&b==d&&c==d) cout<<1<<endl; else if(a+b==c+d||a+c==b+d||a+d==b+c){ if(a==b||a==c||a==d||b==c||b==d||c==d) cout<<4<<endl; else if(a!=b||a!=c||a!=d||b!=c||b!=d||c!=d) cout<<8<<endl; } else cout<<0<<endl; } return 0; }Ps : 数据范围因为是 ,所以需要使用
ull -
- 1
信息
- ID
- 5871
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者