校赛Round2 1008 低能数学题

Problem Description

如图,在平面直角坐标系xOy中,已知椭圆C: 以及它的左准线l:x=-2,过椭圆右焦点F的直线交椭圆于A、B两点,线段AB的垂直平分线分别交直线l和AB于点P、C,若PC=pAB,求直线AB的斜率k。

Input

输入有多组数据(约100组)。每组数据一行一个实数p,表示线段PC与AB长度的比值p(p>=2)

Output

对于每组数据,输出一行一个实数k,表示直线AB的斜率,如果有多组解,请输出最小的一个正数解(保留3位小数)

Sample Input

2
2.5
100

Sample Output

1.000
0.378
0.007


分析:
没想到时隔一年多又遇到了解几题!还是在这种情况下遇到的! <( ̄ˇ ̄)/
最后半个小时就是在做这道题,可惜没做出来~,太弱了╮(╯▽╰)╭
直接设AB直线斜率k,和椭圆方程联立消去y可得x的二次方程:
设A(x1,y1),B(x2,y2),则

PC是AB的垂直平分线,且P点的横坐标上-2,C是AB中点;可得P,C点坐标:

进而可得PC,AB的长度:

带入PC=p*AB并化简可得:

利用求根公式可解得:

难点就是计算准确性!
现场做的时候只做到求出PC,AB长度这一步,下面就不敢写了.....,其实要是有信心写下去用求根公式一下子就写出来了,╮(╯▽╰)╭
#include <stdio.h>
#include <math.h>
int main()
{
	freopen("in.txt", "r", stdin);
	freopen("out.txt", "w", stdout);
	double m, n, t, p, k, k1, k2;
	while (~scanf("%lf", &p))
	{
		n = p*p - 3;
		m = p*sqrt(p*p - 4);
		t = 9 - 2*p*p;
		k1 = (n + m) / t;
		k2 = (n - m) / t;
		if (k1 > 0 && k2 > 0)
		{//需要加一个简单的判断,因为题目要求输出最小正数解
			k = k1 < k2 ? k1 : k2;
		}
		else
		{
			k = k1 > 0 ? k1 : k2;
		}
		printf("%.3lf\n", sqrt(k));
	}
	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
项目:使用 JavaScript 编写的杀死幽灵游戏(附源代码) 杀死鬼魂游戏是使用 Vanilla JavaScript、CSS 和 HTML 画布开发的简单项目。这款游戏很有趣。玩家必须触摸/杀死游荡的鬼魂才能得分。您必须将鼠标悬停在鬼魂上 - 尽量得分。鬼魂在眨眼间不断从一个地方移动到另一个地方。您必须在 1 分钟内尽可能多地杀死鬼魂。 游戏制作 这个游戏项目只是用 HTML 画布、CSS 和 JavaScript 编写的。说到这个游戏的特点,用户必须触摸/杀死游荡的幽灵才能得分。游戏会根据你杀死的幽灵数量来记录你的总分。你必须将鼠标悬停在幽灵上——尽量得分。你必须在 1 分钟内尽可能多地杀死幽灵。游戏还会显示最高排名分数,如果你成功击败它,该分数会在游戏结束屏幕上更新。 该游戏包含大量的 javascript 以确保游戏正常运行。 如何运行该项目? 要运行此游戏,您不需要任何类型的本地服务器,但需要浏览器。我们建议您使用现代浏览器,如 Google Chrome 和 Mozilla Firefox。要玩游戏,首先,单击 index.html 文件在浏览器中打开游戏。 演示: 该项目为国外大神项目,可以作为毕业设计的项目,也可以作为大作业项目,不用担心代码重复,设计重复等,如果需要对项目进行修改,需要具备一定基础知识。 注意:如果装有360等杀毒软件,可能会出现误报的情况,源码本身并无病毒,使用源码时可以关闭360,或者添加信任。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值