一个简单的几何题,自己在纸上列出方程解出结果的表达式,再用程序表达出来就行了。

不过老司机(老司机的woodcoding)说用旋转向量法比较简单,有时间要去看一看。

大致题意:一个圆心在原点的圆,半径未知,现在给你圆上的一点,让你在这个圆上找到另外两点,使得这三点构成的三角形的周长最长。

样例输入:(第一行为一个整数N,表示后面有N组案例,每个案例给出一组圆上点的坐标)

2

1.500        2.000

563.585    1.251

样例输出:(其他两个点的坐标)

0.982 -2.299 -2.482 0.299

-280.709  -488.704  -282.876  487.453

主要思路:首先,一个圆的内接三角形周长最长的是正三角形。设给出的为点A(x,y),圆的半径为R,连接AO,反向延长AO与圆交于点O',以O'为圆心,R为半径画圆,两个圆的交点坐标就是所求的答案。

记O'(a,b),(a=-x,b=-y)目的只是为了防止混淆。

联立x²+y²=R² ① 和 (x-a)²+(y-b)²=R² ②,然后自己打草稿即可。

 #include<stdio.h>
#include<math.h>
int T;
int main()
{
double x,y,a,b,x1,y1,x2,y2,R,A,B,C;//R是圆半径的平方
scanf("%d",&T);
while(T--)
{
scanf("%lf %lf",&x,&y);
a=-x;b=-y;//(x,y)的对称点(a,b)
R=x*x+y*y;
A=R;
B=-R*b;
C=R*R/-a*a*R;
y1=(-B-sqrt(B*B-*A*C))/(*A);
y2=(-B+sqrt(B*B-*A*C))/(*A);//求出y1,y2后还不能马上算x1,x2,防止x作除数
if(x==)
{
x1=-sqrt(R-y1*y1);
x2=sqrt(R-y2*y2);
}
else
{
x1=(R/-b*y1)/a;
x2=(R/-b*y2)/a;
}
printf("%.3lf %.3lf %.3lf %.3lf\n",x1,y1,x2,y2);
}
return ;
}

2016HUAS_ACM暑假集训2L - Points on Cycle(圆上的点)的更多相关文章

  1. 【POJ 1981】Circle and Points(已知圆上两点求圆心坐标)

    [题目链接]:http://poj.org/problem?id=1981 [题意] 给你n个点(n<=300); 然后给你一个半径R: 让你在平面上找一个半径为R的圆; 这里R=1 使得这个圆 ...

  2. 2016HUAS_ACM暑假集训4C - 递推

    题目大意:给你一个高为n ,宽为m列的网格,计算出这个网格中有多少个矩形. 这里我们可以这样看: 对于行:假如是m单位长度,则长度为1的矩形有m个,长度为2的矩形有m-1个......长度为m的只有1 ...

  3. 2016HUAS_ACM暑假集训4A - 递推

    利用组合公式C(n,m)=C(n-1,m)+C(n-1,m-1).也就是从n个数里面选择m个数.按递增方式放在每一层循环. 杨辉三角+二项式定理,还真是挺有“意思”的一道题.说实话,非原创.见谅... ...

  4. 2016HUAS_ACM暑假集训4D - 计数,排列

    一个错排公式的基础应用. 大致题意:求n个数的错误排列方式.(每个都要错) 在这里先贴一下错排公式:D(1)=0:D(2)=1:D(n)=(n-1)*(D(n-1)+D(n-2)) 它的推导也非常有意 ...

  5. 2016HUAS_ACM暑假集训4M - 基础DP

    简单的0-1背包问题,大家都会做的.题意不想解释太多. 简述题目的案例及以几个关键 Sample Input 1                            //测试组数T 5 10     ...

  6. 2016HUAS_ACM暑假集训4K - 基础DP

    我不知道怎么用DP,不过DFS挺好用.DFS思路很明显,搜索.记录,如果刚好找到总价值的一半就说明搜索成功. 题目大意:每组6个数,分别表示价值1到6的物品个数.现在问你能不能根据价值均分. Samp ...

  7. 2016HUAS_ACM暑假集训4F - 数论

    这个题目,如果没找到方向,确实有点一头雾水.但是如果你找对方向了,AC是分分钟的事.答案就是看n和m是否有除1之外的公约数. 简单证明:设n和m最大公约数不是1,假设为p.n和m总可以化为一个数乘以k ...

  8. 2016HUAS_ACM暑假集训4B - 递推

    这种数学推理题目题意极其明显,在做的时候,可以多写几组,这样找起规律来会容易些.概括起来就是:题意简单暴力,案例毫无价值. 一个三角形最多可以把一个平面分成两部分,两个三角形最多是8(2+6)部分,而 ...

  9. 2016HUAS_ACM暑假集训3G - 还是畅通工程

    最小生成树,题目简单.套的Prim模板,其他的题目比较有意义. Sample Input 3                             //村庄个数1 2 1               ...

随机推荐

  1. Nginx模块之————RTMP模块在Ubuntu上以串流直播HLS视频

    Nginx的安装在Ubuntu上以串流直播HLS视频 https://www.vultr.com/docs/setup-nginx-on-ubuntu-to-stream-live-hls-video

  2. windows+linux开发环境 解决laravel blade模板缓存问题

    编码环境windows10 编码IDE:phpstorm 2016.2 PHP框架:laravel5.3 + 代码运行环境:centos7 + nginx 在开发过程中,上传blade模板文件到lin ...

  3. 由两点坐标如何画出直线 matlab

    由两点坐标如何画出直线  方法1:利用直线方程 斜率加截距 方法2:数据拟合 %由两点坐标得数据拟合直线与画线 x = [,]; y = [,]; k = ((-)/(-));% 由两点坐标得到直线斜 ...

  4. Security » Authorization » 要求处理器中的依赖注入

    Dependency Injection in requirement handlers¶ 30 of 32 people found this helpful Authorization handl ...

  5. node.js基础 1之 URL网址解析的好帮手

    URL和URI的区别: URL是统一资源定位符 URI是统一资源标识符 URL是URI的子集(URL一定是URI,但URI不一定是URL) node中的URL中的url.parse protocol: ...

  6. js实现input输入框只能输入数字的功能(完美测试通过)

    <input type="text" style="ime-mode:disabled;" onpaste="return false;&quo ...

  7. 读《程序员的SQL金典》[3]--表连接、子查询

    一.表连接-JOIN 1. 自连接实例 查询类型相同的订单信息. SELECT O1 .*,O2.* FROM T_Order O1 JOIN T_Order O2 ON O1 .FTypeId= O ...

  8. 介绍开源的.net通信框架NetworkComms框架之八 UDP通信

    原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架  作者是英国人  以前是收费的 目前作者已经开源  许可是 ...

  9. Documentum常见问题11-xplore全文检索时找不到相关内容

    最近帮助同事处理了一个关于全文检索的问题,随手记录下来供以后参考. 问题一 某些Cabinet下的文件可以全文检索到,但某些Cabinet下的数据全文检索不成功. 新建了一个Docbase-AADCT ...

  10. Java类的成员函数调用顺序

    class A { public A() { System.out.println("----------A 构造-------------"); } static void sb ...