ZOJ 1241 Geometry Made Simple
来源:互联网 发布:美国eia数据在那里看 编辑:程序博客网 时间:2024/06/09 23:43
Mathematics can be so easy when you have a computer. Consider the following example. You probably know that in a right-angled triangle, the length of the three sides a, b, c (where c is the longest side, called the hypotenuse) satisfy the relation a*a+b*b=c*c. This is called Pythagora's Law.
Here we consider the problem of computing the length of the third side, if two are given.
Input
The input contains the descriptions of several triangles. Each description consists of a line containing three integers a, b and c, giving the lengths of the respective sides of a right-angled triangle. Exactly one of the three numbers is equal to -1 (the 'unknown' side), the others are positive (the 'given' sides).
A description having a=b=c=0 terminates the input.
Output
For each triangle description in the input, first output the number of the triangle, as shown in the sample output. Then print "Impossible." if there is no right-angled triangle, that has the 'given' side lengths. Otherwise output the length of the 'unknown' side in the format "s = l", where s is the name of the unknown side (a, b or c), and l is its length. l must be printed exact to three digits to the right of the decimal point.
Print a blank line after each test case.
Sample Input
3 4 -1
-1 2 7
5 -1 3
0 0 0
Sample Output
Triangle #1
c = 5.000
Triangle #2
a = 6.708
Triangle #3
Impossible.
题意:利用勾股定理计算三角形的边
代码:
#include <stdio.h>
#include <math.h>
int main()
{
int a,b,c;
double m,t;
int j=1;
while(1){
scanf("%d%d%d",&a,&b,&c);
if((a==0)&&(b==0)&&(c==0))
break;
if(a==-1)
{
m=c*c-b*b;
if(m>0)
{
t=sqrt(m);
if(((t+b)>c&&(t+c)>b&&(b+c)>t&&(t-b)<c&&(b-c)<t&&(t-c)<b&&(b-t)<c&&(c-b)<t&&(c-t)<b))
printf("Triangle #%d\na = %.3lf\n\n",j++,t);
else
printf("Triangle #%d\nImpossible.\n\n",j++);
}
else
printf("Triangle #%d\nImpossible.\n\n",j++);
}
else if(b==-1)
{
m=c*c-a*a;
if(m>0)
{
t=sqrt(m);
if(((a+t)>c&&(a+c)>t&&(t+c)>a&&(a-t)<c&&(t-c)<a&&(a-c)<t&&(t-a)<c&&(c-t)<a&&(c-a)<t))
printf("Triangle #%d\nb = %.3lf\n\n",j++,t);
else
printf("Triangle #%d\nImpossible.\n\n",j++);
}
else
printf("Triangle #%d\nImpossible.\n\n",j++);
}
else
{
m=a*a+b*b;
t=sqrt(m);
if(a+b>t)
printf("Triangle #%d\nc = %.3lf\n\n",j++,t);
else
printf("Triangle #%d\nImpossible.\n\n",j++);
}
}
return 0;
}
- zoj 1241 Geometry Made Simple
- ZOJ 1241 Geometry Made Simple
- zoj 1241 Geometry Made Simple
- zoj 1241 Geometry Made Simple
- ZOJ 1241: Geometry Made Simple
- ZOJ 1241 Geometry Made Simple
- ZOJ 1241 Geometry Made Simple
- ZOJ 1241 Geometry Made Simple
- ZOJ Problem Set - 1241 Geometry Made Simple
- ZOJ Problem Set - 1241 Geometry Made Simple
- Num 3 : ZOJ : 1241 Geometry Made Simple
- ZOJ Problem Set - 1241 Geometry Made Simple
- ZOJ Problem Set - 1241 Geometry Made Simple
- zoj 1241.Geometry Made Simple
- 1241 Geometry Made Simple
- ZOJ 1241: Geometry Made Simple 【输出有效数字】
- Geometry Made Simple
- zoj1241-Geometry Made Simple
- 关于openSessionInView的问题
- 转载一篇文章试试 C#判断点在线段的左右侧
- Spring3表达式语言(SpEL)学习笔记
- C# 通讯时字节流和结构体互转
- vim tab设置为4个空格
- ZOJ 1241 Geometry Made Simple
- 黑马程序员_Java学习日记第三天-多态、内部类、异常处理
- Spring 3.0参考之SpEL
- 黑马程序员_Java学习日记第四天-线程、Java1.5的新特性
- HDU 1100 Trees Made to Order (Catalan数)
- 在linux下使用CMake构建应用程序
- AbstractRoutingDataSource
- C 数组与指针
- VC下Base64编码及解码程序源代码