描述
这一次我们就简单一点了,题目在此:
在直角坐标系中有一条抛物线y=ax^2+bx+c和一个点P(x,y),求点P到抛物线的最短距离d。
输入
第1行:5个整数a,b,c,x,y。前三个数构成抛物线的参数,后两个数x,y表示P点坐标。-200≤a,b,c,x,y≤200
输出
第1行:1个实数d,保留3位小数(四舍五入)
- 样例输入
- 2 8 2 -2 6
- 样例输出
- 2.437
思路:三分裸题。注意一下变量类型。
1 #include<cstdio> 2 #include<cmath> 3 using namespace std; 4 int a,b,c,x_0,y_0; 5 6 double f(double x){ 7 return a*x*x+b*x+c; 8 } 9 double disc(double x){ 10 return sqrt((x-x_0)*(x-x_0)+(f(x)-y_0)*(f(x)-y_0)); 11 } 12 13 int main(){ 14 int x,y,dis; 15 double lm,rm,temp; 16 double l=-100000,r=100000; 17 scanf("%d%d%d%d%d",&a,&b,&c,&x_0,&y_0); 18 while(r-l>=0.001){ 19 temp=(r-l)/3.0; 20 lm=l+temp; 21 rm=r-temp; 22 if(disc(lm)>disc(rm)) l=lm; 23 else r=rm; 24 } 25 26 printf("%.3f\n",disc(l)); 27 28 return 0; 29 }
原文地址:https://www.cnblogs.com/yzhhh/p/10048905.html
时间: 2024-10-12 08:19:35