一道平平无奇的题在面前,但是无聊使我做了整个晚自习。
所谓可可爱爱,没有脑袋。
求证:
x>0 时
f(x)=(x1+21)ln(x+1)>1。
首先确认很简单的一点,
limx→0f(x)=1,不妨扩一下定义域,令
f(0)=1。
哎实际上
x<0 时
f(x)>1 也成立,但是这是后话了。于是假设
x 始终满足
x>0,且
′ 是对
x 求导。
那么有
f′(x)=x2x−ln(x+1)−2(x+1)1。
考虑泰勒展开:
ln(x+1)<x−2x2+3x3。
考虑取
x=e−1 处切线:
ln(x+1)≤ex+1
考虑设
g(C,x)=−21ln(x+1)+C 则
g′(C,x)=−2(x+1)1<f′(x),则显然
f(x+Δx)>g((x1+1)ln(x+1),x+Δx),其中
Δx>0。
准备工作完毕。
若
x≤21,将泰勒展开带入
f′(x),可知
f′(x)>x(2(x+1)1−31)≥0。于是
f(x)>f(0)=1。
若
x≥e−22,将
x=e−1 处切线带入
f′(x),可知
f′(x)≥exe−1−2(x+1)1−ex21>ex1(2e−2−x1)≥0。于是
f(x)>f(e−22)>1。
现在无非是要解决中间这段
(21,e−22)。
不要带脑子,宁可带计算器!
由刚才
f(x+Δx)>g((x1+1)ln(x+1),x+Δx) 的结论,又因
g′(x)<0 所以
g(x) 单调递减,尽量往大了取
x+Δx 使函数值恰好为
1 便是。
于是有若
x∈(a,e2((a1+1)ln(a+1)−1)−1) 则
f(x)>1。
注意到取
a 分别为
21,137,74,85,1611,1713,76,4746,2225,2331,1423,1225 时可以覆盖住
(21,e−22),证毕。
然而尚有一个问题:区间实在是太多了。这也没办法,已经是区间最少的方案了。
能不能优化一下呢?如果想要少写几个字的话。
考虑强行搜索出分母之和最小的解:
Cdouble g(double x){return exp(2*((1/x+1)*log(x+1)-1))-1;}
m=114514,ans[100001][2];
void dfs(n,w,x,s,a,b,c,d)double w,x;
{
if(n==0)
{
if(s<m)
{
m=s;
for(int i=11;i;i--)
printf("%d/%d ",ans[i][0],ans[i][1]);
puts("");
}
return;
}
if(s+b+d>=m)
return;
if(x>1.*(a+c)/(b+d))
{
if(1.*(a+c)/(b+d)>w)
{
double y=1.*(a+c)/(b+d);
for(int i=0;i<n;i++)
y=g(y);
if(y>2/(exp(1)-2))
ans[n][0]=a+c,ans[n][1]=b+d,dfs(n-1,1.*(a+c)/(b+d),g(1.*(a+c)/(b+d)),s+b+d,0,1,1,0);
}
dfs(n,w,x,s,a+c,b+d,c,d);
}
else
dfs(n,w,x,s,a,b,a+c,b+d);
return;
}
main(){dfs(11,.5,g(.5),0,0,1,1,0);}
运行后可知可以取
a 分别为
21,137,127,117,107,97,87,1,1315,1115,35,919 即可使分母之和最小。不过话说回来这组解答还是分母最大值最小的,也是分母和分子之和最大值最小的。
其他条件可自行修改代码。