题目大意:
思路:
将半径r转一圈,就得到了
∵∠ABC=90°
∵
∠
A
B
C
=
90
°
∴△ABC
∴△
A
B
C
为直角三角形
∴AB=(2r)2−a2−−−−−−−−√
∴
A
B
=
(
2
r
)
2
−
a
2
∴S△ABC=AB
∴
S
△
A
B
C
=
A
B
×
×
CB=(2r)2−a2−−−−−−−−√
C
B
=
(
2
r
)
2
−
a
2
×
×
a
a
S□ABCD=2
S
□
A
B
C
D
=
2
×
×
S△ABC=2
S
△
A
B
C
=
2
×
×
(2r)2−a2−−−−−−−−√
(
2
r
)
2
−
a
2
×
×
a
a
同理可得
×
×
(2r)2−b2−−−−−−−−√
(
2
r
)
2
−
b
2
×
×
b
b
阴影面积
=S□ABCD+S□EFGH−a
=
S
□
A
B
C
D
+
S
□
E
F
G
H
−
a
×
×
b=2
b
=
2
×
×
(2r)2−a2−−−−−−−−√
(
2
r
)
2
−
a
2
×
×
a+2
a
+
2
×
×
(2r)2−b2−−−−−−−−√
(
2
r
)
2
−
b
2
×
×
b−a
b
−
a
×
×
b
b
<script type="math/tex" id="MathJax-Element-805">b</script>
我知道你们看不懂
那么由于r的值是确定的,而a,b又必须是正整数,那么我们枚举a和b,就可以求出最终答案啦!
感谢 XXY 同学帮助修改markdown!
代码:
#include <cstdio>
#include <cmath>
#include <iostream>
using namespace std;
double maxn,r,d;
int s1,s2;
int main()
{
cin>>r;
for (double i=1;i<2.0*r;i++)
{
double a=(double)sqrt(2.0*r*2.0*r-i*i); //求AB长度
for (double j=1;j<2.0*r;j++)
{
double b=(double)sqrt(2.0*r*2.0*r-j*j); //求EF长度
if (a*i+b*j-i*j>maxn) //求最大值
{
maxn=a*i+b*j-i*j;
s1=(int)i;
s2=(int)j; //记录答案
}
}
}
cout<<s1<<endl<<s2;
return 0;
}