专栏文章
题解:P6468 [COCI2008-2009#6] BAZEN
P6468题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miqy5vqs
- 此快照首次捕获于
- 2025/12/04 12:39 3 个月前
- 此快照最后确认于
- 2025/12/04 12:39 3 个月前
题意简述:
在一个直角边长为 的等腰直角三角形中,给定一个在三角形边上的一点,要求找出同样一个在三角形边上的点,使得两点的连线可以将此三角形的面积平分。保留两位小数。
知识预览:
初中的三角形基础知识;分类讨论思想。
具体思想:
本题要求分类讨论思想能力较高,具体的,令给定的点的坐标为 ,可分为如下几种情况:

- 当给定的点在这个三角形的 三个顶点 上时:由初中的三角形中线定理可得:三角形的中线平分这个三角形的面积。也就是目标点在给定点的 对边的中点上。
- 当给定的点在这个三角形 三边的中点 上时:由( )反推:给定点位于目标点的 对边的中点上 。
- 当给定的点在这个三角形的 斜边(即 边)上时:若 ,则目标点 在 上;若 ,则目标点 在 上 。
- 当给定的点在这个三角形的 直角边(即 以及 边)上时:则目标点在 斜边 上。
具体公式请读者自行画图理解,运用三角形的面积公式的灵活变换寻求答案。
代码如下:
CPP#include<bits/stdc++.h>
using namespace std;
double x,y,s=31250.0;
int main(){
cin>>x>>y;
if(x==0&&y==0){
cout<<"125.00 125.00";
exit(0);
}
if(x==250&&y==0){
cout<<"0.00 125.00";
exit(0);
}
if(x==0&&y==250){
cout<<"125.00 0.00";
exit(0);
}
if(x==125&&y==125){
cout<<"0.00 0.00";
exit(0);
}
if(x==0&&y<250){
if(y>125.0){
double h=s/y;
cout<<fixed<<setprecision(2)<<h<<" 0.00";
}
else{
double d=250.0-y;
double h=s/d;
cout<<fixed<<setprecision(2)<<h<<" "<<250.00-h
}
exit(0);
}
if(y==0&&x<250){
if(x>125.0){
double h=s/x;
cout<<fixed<<setprecision(2)<<"0.00 "<<h;
}
else{
double d=250.0-x;
double h=s/d;
cout<<fixed<<setprecision(2)<<250.00-h<<" "<<h;
}
exit(0);
}
if(x+y==250&&x>y){
double d=s/x;
cout<<fixed<<setprecision(2)<<"0.00 "<<250.00-d;
exit(0);
}
if(x+y==0&&x<y){
double d=s/y;
cout<<fixed<<setprecision(2)<<250.00-d<<" 0.00";
exit(0);
}
}
好了,最后给大家留个证明题:在 边上的点的横纵坐标的和为 。很简单的。
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...