zoukankan      html  css  js  c++  java
  • 数字比较(牛客网周练)

    数字比较

    链接:https://ac.nowcoder.com/acm/contest/5713/E
    来源:牛客网

    题目描述

    牛牛很喜欢对数字进行比较,但是对于3 > 2这种非常睿智的比较不感兴趣。上了高中之后,学习了数字的幂,他十分喜欢这种数字表示方法,比如xy

    由此,他想出了一种十分奇妙的数字比较方法,给出两个数字x和y,请你比较xy和yx的大小,如果前者大于后者,输出">",小于则输出"<",等于则输出"="。

    输入描述:

    两个数字x和y。

    满足1 <= x,y <= 109

    输出描述:

    一个字符,">","<"或者"="。
    示例1

    输入

    2 2

    输出

    =
    示例2

    输入

    2 4

    输出

    =

    很明显,题目的题意不难理解,但是给的数据太大了,让快速幂直接比较无处可解。
    比较大小的话,可以用除法,但还是得算出幂来。
    想来想去,比较的问题还可以借用数学中的对数来比较,这可是很有特性的,在数学课上练了不知多少遍,居然没怎么想起来。
    先来看一下对数ans=logax的特性,当x=1时,ans=0;当a>1,x>1时,ans>0;当a>1,0<x<1时,ans<0.
    假设对数以10为底。
    lg(x/y)=lgx-lgy;
    而lgxa=a*lgx;
    所以lgxy=y*lgx ; lgyx=x*lgy ;
    如果xy/yx>1的,说明前者大于后者,
    如果xy/yx<1的,说明前者小于后者;
    如果xy/yx=1,说明两者相等。
    而lg(xy/yx)=y*lgx-x*lgy;
    比较两者只需要看差是否小于0(前小于后),大于0,等于0即可。
    注意开double

    代码如下:
     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cmath>
     4 using namespace std;
     5 int main()
     6 {
     7     int x,y;
     8     cin>>x>>y;
     9     double c1=(double)y*log(x);
    10     double c2=(double)x*log(y);
    11     double res=c1-c2;
    12     if(res>0)
    13     printf(">");
    14     else if(res<0)
    15     printf("<");
    16     else
    17     printf("=");
    18     return 0;
    19 }


  • 相关阅读:
    HTML中CSS入门基础
    HTML基本代码教学,第三天
    HTML基本代码教学,第二天
    HTML基本代码教学片,认识HTML
    开学第一天,规章制度,教学大纲
    新的学期,从头开始
    开启新模式WinForm
    封装、继承、多态的基本详细使用方式与方法以及含义
    Python开发基础-Day4-布尔运算、集合
    Python开发基础-Day3-列表、元组和字典
  • 原文地址:https://www.cnblogs.com/theshorekind/p/12919522.html
Copyright © 2011-2022 走看看