E - Crossed Ladders
2016-07-26 16:17
92 查看
E - Crossed Ladders
Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%lld & %lluSubmit
Status
Description
A narrow street is lined with tall buildings. An x foot long ladder is rested at the base of the building on the right side of the street and leans on the building on the left side. A y foot long ladder is rested at the base of the building on the left side of the street and leans on the building on the right side. The point where the two ladders cross is exactly c feet from the ground. How wide is the street?
Input
Input starts with an integer T (≤ 10), denoting the number of test cases.
Each test case contains three positive floating point numbers giving the values of x, y, and c.
Output
For each case, output the case number and the width of the street in feet. Errors less than 10-6 will be ignored.
Sample Input
4
30 40 10
12.619429 8.163332 3
10 10 3
10 10 1
Sample Output
Case 1: 26.0328775442
Case 2: 6.99999923
Case 3: 8
Case 4: 9.797958971
题意:
思路:
失误:
代码如下:
#include<iostream> #include<cstdio> #include<cmath> using namespace std; #define esp 1e-13 double x,y,c,l,r,mid; double judge(double mid) { return (sqrt(x*x-mid*mid)*sqrt(y*y-mid*mid))/(sqrt(y*y-mid*mid)+sqrt(x*x-mid*mid )); //写错了好几次 ,成写成加 } int main() { int t,k=0; cin>>t; while(t--) { cin>>x>>y>>c; l=0;r=max(x,y); while(r-l>esp) { mid=(l+r)/2.0; if(abs(judge(mid)-c)<esp) break; if(judge(mid)>c) { l=mid-esp; } else { r=mid+esp; } } cout<<"Case "<<++k<<": "; printf("%.6lf\n",mid); } return 0; }
相关文章推荐
- ubuntu12.04加域
- Linux x64安装Oracle 32位客户端的说明
- java串口通信comm API说明
- 如何利用iOS多核高效遍历数组.
- 利用反射通用的设置某个对象的某个字段为指定的值
- JAVA 读取txt文件中的数据赋给String变量
- Broadcom 4365(如:Dell vostro 3460)笔记本wifi无法使用解决办法:
- SAP资产明细报表
- Web 开发规范 — WSGI
- 简单的php socket 实例
- js的大小写敏感性
- [置顶]【H3 BPM工作流程管理产品小故事】第一篇 配置简单流程
- android 发送邮件
- MYSQL主从复制原理画图深入浅出讲解
- 笔记本(USB 3.0,如:Thinkpad S3)上Ubuntu虚拟机无法连接USB或手机解决办法
- mybatis 中#与$的区别
- js注意事项10
- 面试准备之--字符串旋转
- Java设计模式——工厂模式,建造者模式
- 关于c#中双主键表数据如何绑定到DataTable的方法(针对于dataset.xsd的特殊情况)