传送门, http://acm.hdu.edu.cn/showproblem.php?pid=5924
题目大意:
输入两个正整数
A,B
(
A≤B
),求
C,D
使得
C,D∈[A,B]
,且
AB+BA≤CD+DC
.
题目分析:
画下
y=x+1x
图像,然后在
x=1
左边点一个点,在右边点一个点,他们的y值相等。设左边那个点为
AB
,右边那个点是
BA
,同理画出C/D、D/C点位置,所以
CD≤AB
,即
BC≤AD
。
又知道
C,D∈[A,B]
,所以有
AD≤BC
,因此
AD=BC
,又由于
A≤C
,所以
D≥B
.显然只能取
D=B
.同理
A=C.
剩下就简单了,必须在两边取就得了。
大部分题解只说在边上,但没给出相对严格的证明。当然也希望有更简单的证明方法。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {
int t;
ll a,b;
scanf("%d",&t);
for(int i=1;i<=t;i++) {
scanf("%I64d %I64d",&a,&b);
printf("Case #%d:\n", i);
if(a==b)
printf("1\n%I64d %I64d\n", a,b);
else {
printf("2\n%I64d %I64d\n%I64d %I64d\n", a,b,b,a);
}
}
}