UVa 10700 Camel trading:计算表达式

10700 - Camel trading

Time limit: 3.000 seconds

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=113&page=show_problem&problem=1641

Background

Aroud 800 A.D., El Mamum, Calif of Baghdad was presented the formula 1+2*3*4+5, which had its origin in the financial accounts of a camel transaction. The formula lacked parenthesis and was ambiguous. So, he decided to ask savants to provide him with a method to find which interpretation is the most advantageous for him, depending on whether is is buying or selling the camels.

The Problem

You are commissioned by El Mamum to write a program that determines the maximum and minimum possible interpretation of a parenthesis-less expression.

Input

The input consists of an integer N, followed by N lines, each containing an expression. Each expression is composed of at most 12 numbers, each ranging between 1 and 20, and separated by the sum and product operators + and *.

Output

For each given expression, the output will echo a line with the corresponding maximal and minimal interpretations, following the format given in the sample output.

Sample input

3
1+2*3*4+5
4*18+14+7*10
3+11+4*1*13*12*8+3*3+8

Sample output

The maximum and minimum are 81 and 30.
The maximum and minimum are 1560 and 156.
The maximum and minimum are 339768 and 5023.

水题。

完整代码:

/*0.016s*/

#include<cstdio>
#include<cstring>
typedef long long ll;  

ll mul[15], add[15];  

int main()
{
    int n, mp, ap;
    ll max, min, num;
    char c;
    scanf("%d", &n);
    while (n--)
    {
        memset(mul, 0, sizeof(mul));
        memset(add, 0, sizeof(add));
        c = '+';
        mp = 0, ap = -1;
        while (c != 10)
        {
            scanf("%lld", &num);
            if (c == '+') mul[mp] += num, add[++ap] = num;
            else mul[++mp] = num, add[ap] *= num;
            scanf("%c", &c);
        }
        max = 1, min = 0;
        for (int i = 0; i <= mp; ++i) max *= mul[i];
        for (int i = 0; i <= ap; ++i) min += add[i];
        printf("The maximum and minimum are %lld and %lld.\n", max, min);
    }
    return 0;
}

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/sjjg/

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索camel
, maximum
, minimum
, and
, camelize
, expression
The
pc3 10700、pc3 10700 667mhz、10700日元、10700、gtx107008gsi,以便于您获取更多的相关知识。

时间: 2024-09-20 01:13:02

UVa 10700 Camel trading:计算表达式的相关文章

uva 10700 - Camel trading

点击打开链接 题目意思:     给定一个表达式,要求找到这个表达式的最大值和最小值 解题思路:     1:思路:模拟题                       2:对于给定的一个表达式,最小值就是直接去计算这个表达式.如果要求算出的值最大,那么我们知道乘号的个数是不会改变的,所以如果能够让乘号旁边的数字越大越好,所 以我们把所有+旁边的数全部加为一个数,然后在计算就是最大值,例如3+11+4*1*13*12*8+3*3+8应该就是要(3+11+4)*(1)*(13)*(12)*(8+3)

UVa 10700:Camel trading

链接: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=113&page=show_problem&problem=1641 原题: Background Aroud 800 A.D., El Mamum, Calif of Baghdad was presented the formula 1+2*3*4+5, which had its origin in the

C++二叉树应用:计算表达式

昨天晚上,我花了大把的时间研究里面二叉树应用解决计算表达式的问题,一直就没理解,主要是觉得是不是自己错了,又懒,不愿意自己把代码敲到电脑里看看,结果浪费了很多时间.所以还是提醒大家,代码这种东西,有什么好多看的,觉得他错了就自己敲到电脑里去看看!其实也没错太多,就是少了一些东西,导致原代码里的括号完全没有意义,也就是说,书中的代码虽然考虑到了计算表达式中的括号,却什么都没有做,而这其实只要稍稍改进:加一个flag存储上次读到的char,如果是')'的话,就要把左式当成运算数来计算. 好了,把正确

python实现逆波兰计算表达式的方法

  这篇文章主要介绍了python实现逆波兰计算表达式的方法,较为详细的分析了逆波兰表达式的概念及实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下 逆波兰表达式又叫做后缀表达式.在通常的表达式中,二元运算符总是置于与之相关的两个运算对象之间,所以,这种表示法也称为中缀表示.波兰逻辑学家J.Lukasiewicz于1929年提出了另一种表示表达式的方法.按此方法,每一运算符都置于其运算对象之后,故称为后缀表示. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

用栈计算表达式-c++如何用栈实现计算表达式?

问题描述 c++如何用栈实现计算表达式? 要求用栈,表达式可以输入加减乘除,小括号,小数点,可以计算两位数以上的,可以接收负数. 解决方案 表达式的类型为string哦! 解决方案二: 这是第一次创建博客 ,我想把它当成 成长日记的存在? 保存自己的代码? 并且和别人分享英语不好??? 见谅/**栈的后进先出,运算符的优先级,*当运算符和栈中运算符比较 优先级小 ,字符出栈进行计算,否则字符入栈*/ IntStack is=new IntStack(); charstack cs1=new ch

《Python游戏编程快速上手》一2.2 计算表达式

2.2 计算表达式 当计算机求解表达式10 + 5并且得到值15的时候,它就已经计算了这个表达式.计算一个表达式就是把表达式规约为一个数字,就像解答一道数学题而把问题简化成一个数字一样:数字就是答案.表达式10 + 5和表达式10 + 3 + 2的计算结果都是15. 表达式可以是任意大小的,但它们总是会求解得到一个数字.即便单个值也可以是表达式:表达式15的计算结果就是值15.例如,表达式8 * 3 / 2 + 2 + 7 -9,通过如下步骤,其计算结果是值12.0. 8 * 3 / 2 + 2

无法watch-当前方法的代码已经过优化 无法计算表达式的值

问题描述 当前方法的代码已经过优化 无法计算表达式的值 网上找的解决方案是在项目属性里不要勾选 代码优化 可是我的项目一直都没有勾选过 解决方案 你从哪看出来我使用了response.end 和 HttpContext.Current.ApplicationInstance.CompleteRequest 结束 ???? 解决方案二: 这种情况一般是使用了response.end,并将代码放在try catch里,解决办法就是将response.end去掉或正如楼主用HttpContext.Cu

C#动态编译计算表达式的值

C#动态编译计算表达式的值,是通过System.CodeDom.Compiler命名空间下的相关类来实现的.其步骤大致为: 1.将表达式包装成为可编译的C#代码 2.使用反射调用上一步编译的代码. 示例如下:在界面上放一个TextBox,用来输入表达式:放一个按钮,用来相应用户点击,以进行表达式的计算:在另外一个TextBox中显示计算结果.对应的xaml代码如下: <Window x:Class="SampleCodeDemo.MainWindow" xmlns="h

使用ExpressionBuilder 类 在分析页的过程中计算表达式

ExpressionBuilder 类是在分析页的过程中创建代码表达式的表达式生成器的基类. 表达式生成器分析声明性表达式,并创建代码来检索绑定到控件属性的值.在非编译方案中,支持非编译功能的表达式生成器在运行时计算表达式. 页分析器如果遇到用 <%$ %> 字符串分隔的表达式,则根据字符串中的前缀为表达式创建表达式生成器.前缀是字符串中冒号 (:) 左侧的部分.例如,分析器如果遇到字符串 <%$ ConnectionStrings:MessageDB %>,则创建一个 Conne