为了账号安全,请及时绑定邮箱和手机立即绑定

C语言已知内切圆半径求直角三角形的三条边长

C语言已知内切圆半径求直角三角形的三条边长

梦里花落0921 2019-05-21 09:02:35
#include#includevoidsolve(intr){for(inta=2*r;a
查看完整描述

2 回答

?
月关宝盒

TA贡献1772条经验 获得超5个赞

这道题的答案应该是这样,我给你说一下思路
首先这个问题只需要一次循环就能得出答案
因为已知内切圆半径和三角形是直角这两个信息,这时候设其中一条直角边长度为X另一条直角边的长度是不是就已经确定了?
然后就是思考,这个循环的范围,因为内切圆的长度是2r,所以X至少是2r+1循环到什么时候结束呢
当X慢慢变长三角形会慢慢接近等腰之间三角形此时边长为D,只需循环X<=D就行了,
接下来证明,因为假设X>D存在一个整数X1,使得另一个直角边也是整数为X2,那X2必然小于D,
因为在三角形为等腰直角三角形的时候,另一条直角边为D,X再增加另一条边会慢慢变短
所以这个X1,X2这个解会在X=X2的时候就被找到
思路有了后代码其实很简单,主要工作量都在根据X算出另一条边上,这个在纸上列个方程,写进去就行
我写个伪代码,半径为r内切圆的等腰直角三角形的边为2r+√2r
for(intx=2*r+1;x<=2r+√2r;x++){
x2=f(x,r)//解方程计算另一条边
if(x2为整数){
printf("%d%d",x,x2)
}
}
没有则说明无解
                            
查看完整回答
反对 回复 2019-05-21
  • 2 回答
  • 0 关注
  • 560 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信