1. 程式人生 > >5924 不等式證明或打表找規律

5924 不等式證明或打表找規律

解題思路:

【題意】
給你兩個正整數A和B

要求找出所有的整數對(C,D)

滿足A≤C≤B,A≤D≤B且A/B+B/A≤C/D+D/C

【型別】
數學證明
【分析】
網上的很多題解貌似都直接說是規律就完事了

作為一個合格的Acmer,我們應該要糾結一下為什麼

∵C/D+D/C是對稱的

∴我們不妨假設D≥C

為了簡化運算,我們令D=C+k(k≥0)

由上式可知,當k越大,C越小時,D/C+C/D越大

∵A≤C≤B

∴C(min)=A

此時,當k達到最大時,即為D(max)=B

而該情況下,C/D+D/C恰好等於A/B+B/A

故滿足A/B+B/A≤C/D+D/C的解僅有A==C&&B==D||A==D&&B==C

而當A==B時,解唯一,即A==B==C==D

/**
    不等式證明,https://blog.csdn.net/queuelovestack/article/details/52791679
    或打表找規律
*/

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
int main()
{
#ifdef _WY
freopen("data.in","r",stdin);
#endif // _WY
    int T;scanf("%d",&T);
    LL a,b;int kase=0;
    while
(T--){ printf("Case #%d:\n",++kase); scanf("%lld%lld",&a,&b); if(a>b) swap(a,b); if(a==b)printf("%d%\n%lld %lld\n",1,a,b); else printf("%d\n%lld %lld\n%lld %lld\n",2,a,b,b,a); } return 0; }