比较a^b与b^a的大小

给你两个int型的正整数,比较a的b次方与b的a次方的大小。

思路:这道题我们要用到高中所学的知识,当a>0&&b>0分别对a^b和b^a取对数=>blna alnb=>lna/a lnb/b=>lnx/x=>(求导)(1-lnx)/x^2=>x==e(零点)=> (0,e) 单增 (e,+00) 单减
                                           当a<=0&&b>0 b%2==0 a^b>b^a b&1==1 a^b                                            当a>0&&b<=0 a^b>b^a
                                           当a<0&&b<0 |a|%2==0 b^a>a^b |b|%2==0 a^b>b^a |a|&&|b|%2==0 (-e,0)单减 (-00,-e)单增  |a|&&|b|&1==1 (-00,-e)单减 (-e,0)单增


#include
int main(){
      int a,b;
     while(~scanf("%d%d",&a,&b)){
        if(a>b){
            int num=a;
            a=b;
            b=num;
        }//强制规定a2) c='>';
            else if(a==2){ if(b>4) c='>';
                           else if(b==4) c='=';
                           else c='<';}
            else if(a==1||a==0) c='<';
            else if(a<0){
                if(b>=0&&b%2==0) c='>';
                else if(b>0&&b%2==1) c='<';
                else if(b<0) {
                    if(abs(a)%2==0&&abs(b)%2!=0) c='<';
                   else if(abs(a)%2!=0&&abs(b)%2==0) c='>';
                   else if(abs(a)%2==0&&abs(b)%2==0){
                    if(b<-2) c='>';
                    else if(b==-2){
                        if(a<-4) c='<';
                           else if(a==-4) c='=';
                    }
                   }
                   else{
                    if(b<-2) c='<';
                    else if(b==-2){
                        if(a<-4) c='>';
                           else if(a==-4) c='=';
                    }
                   }
                }
            }
        }
        printf("%d^%d%c%d^%d\n",a,b,c,b,a);
     }
     return 0;
}


你可能感兴趣的:(算法)