POJ - 1183 反正切函数的应用
由
题
目
可
知
:
由题目可知:
由题目可知:
(
p
+
q
)
/
(
1
−
p
q
)
=
1
/
a
,
(p+q)/(1−pq)=1/a,
(p+q)/(1−pq)=1/a,
其
中
p
=
1
/
b
,
q
=
1
/
c
其中p=1/b,q=1/c
其中p=1/b,q=1/c
即
1
/
a
=
(
b
+
c
)
/
(
b
c
−
1
)
即
1
/
a
=
(
b
+
c
)
/
(
b
c
−
1
)
即1/a=(b+c)/(bc−1)即1/a=(b+c)/(bc−1)
即1/a=(b+c)/(bc−1)即1/a=(b+c)/(bc−1)
由
上
式
可
得
,
c
=
(
a
b
+
1
)
/
(
b
−
a
)
,
那
么
b
+
c
=
b
+
(
a
b
+
1
)
/
(
b
−
a
)
由上式可得,c=(ab+1)/(b−a),那么b+c=b+(ab+1)/(b−a)
由上式可得,c=(ab+1)/(b−a),那么b+c=b+(ab+1)/(b−a)
我们将ab去掉
b
+
c
=
b+c=
b+c=
b
+
a
b
/
(
b
−
a
)
+
1
/
(
b
−
a
)
=
b+ab/(b−a)+1/(b−a)=
b+ab/(b−a)+1/(b−a)=
b
+
(
a
b
+
a
∗
a
−
a
∗
a
)
/
(
b
−
a
)
+
1
/
(
b
−
a
)
b+(ab+a∗a−a∗a)/(b−a)+1/(b−a)
b+(ab+a∗a−a∗a)/(b−a)+1/(b−a)
b
+
a
+
(
a
∗
a
+
1
)
/
(
b
−
a
)
b+a+(a∗a+1)/(b−a)
b+a+(a∗a+1)/(b−a)
所
以
就
是
b
+
c
=
b
+
a
+
(
a
∗
a
+
1
)
/
(
b
−
a
)
所以就是b+c=b+a+(a∗a+1)/(b−a)
所以就是b+c=b+a+(a∗a+1)/(b−a)
求 b + c b+c b+c的最小值
因为右边只有一个自变量b,所以设 x = b − a x=b-a x=b−a
f
(
x
)
=
x
+
(
a
∗
a
+
1
)
/
x
+
2
∗
a
f(x)=x+(a*a+1)/x+2*a
f(x)=x+(a∗a+1)/x+2∗a
即
当
x
<
=
s
q
r
t
(
a
∗
a
+
1
)
时
,
b
+
c
能
取
到
最
小
值
即当x<=sqrt(a*a+1)时,b+c能取到最小值
即当x<=sqrt(a∗a+1)时,b+c能取到最小值
函
数
值
x
从
s
q
r
t
(
x
)
到
0
逐
渐
减
少
,
符
合
x
被
i
整
除
时
,
结
束
循
环
函数值x从sqrt(x)到0逐渐减少,符合x被i整除时,结束循环
函数值x从sqrt(x)到0逐渐减少,符合x被i整除时,结束循环
#include<cstdio>
#include<cmath>
int main()
{
long long a;
while(scanf("%lld",&a)!=EOF)
{
long long x=a*a+1;
for(int i=sqrt(x);i>0;i--)
{
if(x%i==0)//能被整除的时候,x/i为整数
{
printf("%lld\n",i+x/i+2ll*a);
break;
}
}
}
return 0;
}