题解 | #清楚姐姐学信息论#

清楚姐姐学信息论

https://ac.nowcoder.com/acm/contest/46812/A

不难知道x进制x*y张牌可以表示行x^y个数,所以只要比较x^y和y^x就行了!!!

没错你炸了!!!

x ^ y和y ^ x比较可以变成成y * logx和x * logy比较,这样就不会炸了。

#include <bits/stdc++.h>
#define ll long long
using namespace std;

ll fp(ll x,ll y){
    ll sum = 1;
    while(x){
        if(y&1) sum*=x;
        x*=x;
        y/=2;
    }
    return sum;
}

int main(){
    ll x,y;
    double fpx,fpy;
    cin >> x >> y;
    fpx = y*log(x),fpy = x*log(y);
    if(fpx<fpy){
        cout << y << endl;
    }else if(fpx>fpy){
        cout << x << endl;
    }else{
        cout << min(x,y) << endl;
    }
    return 0;
}
全部评论
我也是用的log10转化,至于为什么没有炸是数据不太OK,他超longlong两个都是负数而且一样的会你们肯定让他输出最小值,所以跑对了,但如果数据是 2 10000的话就错了
1 回复 分享
发布于 2023-01-30 19:38 福建
可以不用比较,直接选个小的就行。2和3特判一下
点赞 回复 分享
发布于 2023-01-30 19:57 黑龙江
我直接比较没有炸诶
点赞 回复 分享
发布于 2023-01-30 19:21 浙江
根据函数单调性,发现e左右不一样,本题范围也就是2和其他数字不一样,进一步易发现3进制>2进制>=其他所有进制。然后瞬间联想到一个点,据说计算机本来想用三进制的【doge】于是特判了一下过了
点赞 回复 分享
发布于 2023-01-30 18:53 湖北
我用的是x^y和y^x,过了诶。。。 不过这种方法很棒就是啦
点赞 回复 分享
发布于 2023-01-30 18:33 江苏

相关推荐

评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务