注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

告别迷茫

梦想与现实的差距,就是我们生活的意义。因为我们有差距,我们才会一直积累,在努力。

 
 
 

日志

 
 

Geometry Made Simple  

2014-03-20 23:32:46|  分类: STL ACM |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
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
n 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.

题是使用勾股定理来计算直角三角形的一条边,有两个地方需要注意。
一个是输出格式,要输出的字符串部分,一定要与题目要求的一模一样,一个好办法
是直接从网页中复制,因为里边有些空格和标点符号,这样可以保证字符串是一模一样的。
另外一个格式是,本题要求输出完一个测试案例后再输出一个空行,而不是输出数据之间
输出一个空行,这两种格式是有区别的。ACM 程序设计就是这样,追求精确,追求一致
性。因为,输出结果的正确与否,完全是计算机进行文件比对的,所以,输出的结果一定
要与答案文件里的样子一模一样才会判对,所以,我一直强调输出格式的重要性,再好的
算法,如果输出格式不对,系统都会判错。
另一点就是要求输出小数点后三位有效数字,如果采用 cout 输出的话,先用
“cout.precision(3);”语句来指定输出精度是 3 位,再在输出前使用“cout<<fixed”来指定
采用定点输出,也就是说,3 位精度是小数点后的三位。



#include <fstream>
#include <iostream>

#include <cmath>
using namespace std;
int main(int argc, char* argv[])
{
ifstream cin("aaa.txt");
int a,b,c,n;
n=0;
cout.precision(3);//有效数字三位
while(cin>>a>>b>>c)
{
if(a==0&&b==0&&c==0)break;
n++;
if(a==-1)
{
if(c*c-b*b<=0)
{
cout<<"Triangle #"<<n<<endl;
cout<<"Impossible."<<endl;
cout<<endl;//产生空行
}
else
{
cout<<"Triangle #"<<n<<endl;
//定点输出
cout<<"a = "<<fixed<<pow(c*c-b*b,.5)<<endl;
cout<<endl;//产生空行
}
}
else if(b==-1)
{
if(c*c-a*a<=0)
{
cout<<"Triangle #"<<n<<endl;
cout<<"Impossible."<<endl;
cout<<endl;//产生空行
}
else
{
cout<<"Triangle #"<<n<<endl;
//定点输出
cout<<"b = "<<fixed<<pow(c*c-a*a,.5)<<endl;
cout<<endl;//产生空行
}
}
else if(c==-1)
{
cout<<"Triangle #"<<n<<endl;
//定点输出
coucout<<endl;//产生空行
}
}
return 0;t<<"c = "<<fixed<<pow(a*a+b*b,.5)<<endl;



  评论这张
 
阅读(18)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017