热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Codeforces621DRatKweshandCheese

传送门:http:codeforces.comcontest621problemDdouble1.07*10的308位longdouble简直神器4900多位

传送门:
http://codeforces.com/contest/621/problem/D

double 1.07*10的308位
long double 简直神器 4900多位
此题log里面会卡负数,因此可以用long double 然后一个log 就可以了!!

今天想叉掉一个B题暴力写的,然后输出文件手点的太快,导致数据没写完,最后invalid input 简直可惜啊!!!!

#include 
#include 

#define double long double
using namespace std;

double get2(double x, double y, double z) {
    //(x ^ y) ^ z
    return y * z * log(x);
}

const double eps = 1e-10;

bool bigger(double a, double b) {
    //a > b
    return a - b > 0; //-eps;
}

bool equal(double a, double b) {
    return abs(a - b) double best;
int best_pos;
int pos;

void try1(double x, double y, double z, bool sure = false) {
    ++ pos;

    //x ^ y ^ z
    double val = pow(y, z) * log(x);

    if (bigger(val, best) || sure) {
        best = val;
        best_pos = pos;
    }
}

void try2(double x, double y, double z, bool sure = false) {
    ++ pos;

    //(x ^ y) ^ z
    double val = y * z * log(x);

    if (bigger(val, best) || sure) {
        best = val;
        best_pos = pos;
    }
}


int main()
{
    double x, y, z;
    cin >> x >> y >> z;

    try1(x, y, z, true);
    try1(x, z, y);
    try2(x, y, z);
    try2(x, z, y);

    try1(y, x, z);
    try1(y, z, x);
    try2(y, x, z);
    try2(y, z, x);

    try1(z, x, y);
    try1(z, y, x);
    try2(z, x, y);
    try2(z, y, x);
    //cout<
    if (best_pos == 1)
        cout <<"x^y^z\n";
    else if (best_pos == 2)
        cout <<"x^z^y\n";
    else if (best_pos == 3)
        cout <<"(x^y)^z\n";
    else if (best_pos == 4)
        cout <<"(x^z)^y\n";
    else if (best_pos == 5)
        cout <<"y^x^z\n";
    else if (best_pos == 6)
        cout <<"y^z^x\n";
    else if (best_pos == 7)
        cout <<"(y^x)^z\n";
    else if (best_pos == 8)
        cout <<"(y^z)^x\n";
    else if (best_pos == 9)
        cout <<"z^x^y\n";
    else if (best_pos == 10)
        cout <<"z^y^x\n";
    else if (best_pos == 11)
        cout <<"(z^x)^y\n";
    else if (best_pos == 12)
        cout <<"(z^y)^x\n";

    return 0;
}

不过题解给的思想还是蛮给力的,毕竟long double
能解决的位数也是有限的,属于是水过,标解是这样的,我们还是取双log,分成三类,
1.如果a,b,c都是大于1的,那么好办
2.如果至少有一个是大于1的,那么就要把大于1的作为底,因为如果把小于1的做底,那么结果永远是小于1的,那么我们就可以不去比较那些会使得值为负数的表达式,就ok了
3.如果三个数都小于1的话,那么我们可以将底数取倒数,然后就比较最小值就ok了,简直机智啊!orz


推荐阅读
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文详细介绍了GetModuleFileName函数的用法,该函数可以用于获取当前模块所在的路径,方便进行文件操作和读取配置信息。文章通过示例代码和详细的解释,帮助读者理解和使用该函数。同时,还提供了相关的API函数声明和说明。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了C++中省略号类型和参数个数不确定函数参数的使用方法,并提供了一个范例。通过宏定义的方式,可以方便地处理不定参数的情况。文章中给出了具体的代码实现,并对代码进行了解释和说明。这对于需要处理不定参数的情况的程序员来说,是一个很有用的参考资料。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 本文介绍了一种划分和计数油田地块的方法。根据给定的条件,通过遍历和DFS算法,将符合条件的地块标记为不符合条件的地块,并进行计数。同时,还介绍了如何判断点是否在给定范围内的方法。 ... [详细]
  • 本文介绍了解决二叉树层序创建问题的方法。通过使用队列结构体和二叉树结构体,实现了入队和出队操作,并提供了判断队列是否为空的函数。详细介绍了解决该问题的步骤和流程。 ... [详细]
  • 本文介绍了一个程序,可以输出1000内能被3整除且个位数为6的所有整数。程序使用了循环和条件判断语句来筛选符合条件的整数,并将其输出。 ... [详细]
author-avatar
_Vision_破晓
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有