题意:给出只包含数字和+*的表达式,你可以自己安排每一个运算的顺序,让你找出表达式可能得到的最大值和最小值。

很明显,先乘后加是最小值,先加后乘能得到最大值。

其实不是很明显。。。

证明下:

数字的范围是大于等于1的,所以a+b*c如果先考虑加法就变成(a+b)*c,变换下就是ac+bc,而先考虑乘法的话就是a+bc,由于c是大于等于1的,所以ac+bc>=a+bc,先考虑加法结果会不小于先考虑乘法。

根据这个思想,先乘后加是最小值,先加后乘能得到最大值。

代码:

 /*
* Author: illuz <iilluzen@gmail.com>
* Blog: http://blog.csdn.net/hcbbt
* File: uva10700.cpp
* Lauguage: C/C++
* Create Date: 2013-08-25 16:58:52
* Descripton: UVA 10700 Camel trading, simulation
*/
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <iostream>
#include <list>
#include <vector>
#include <map>
#include <set>
#include <deque>
#include <queue>
#include <stack>
#include <utility>
#include <algorithm>
using namespace std;
#define rep(i, n) for (int i = 0; i < (n); i++)
#define repu(i, a, b) for (int i = (a); i < (b); i++)
#define repf(i, a, b) for (int i = (a); i <= (b); i++)
#define repd(i, a, b) for (int i = (a); i >= (b); i--)
#define swap(a, b) {int t = a; a = b; b = t;}
#define mc(a) memset(a, 0, sizeof(a))
#define ms(a, i) memset(a, i, sizeof(a))
#define sqr(x) ((x) * (x))
#define FI(i, x) for (typeof((x).begin()) i = (x).begin(); i != (x).end(); i++)
typedef long long LL;
typedef unsigned long long ULL; /****** TEMPLATE ENDS ******/ const int MAXN = 30;
char o[MAXN];
LL s[MAXN], m; LL Min() {
LL sum = 0;
rep(i, m) {
LL t = s[i];
while(o[i] == '*') t *= s[++i];
sum += t;
}
return sum;
} LL Max() {
LL sum = 1;
rep(i, m) {
LL t = s[i];
while(o[i] == '+') t += s[++i];
sum *= t;
}
return sum;
} int main() {
int n;
scanf("%d\n", &n);
while (n--) {
m = -1;
mc(o); mc(s);
while (o[m++] != '\n')
scanf("%lld%c", &s[m], &o[m]);
printf("The maximum and minimum are %lld and %lld.\n", Max(), Min());
}
return 0;
}

最新文章

  1. 表单验证插件之jquery.validate.js
  2. tab
  3. python安装库
  4. JavaWeb---总结(十五)JSP基础语法
  5. FPM打包工具
  6. 【leetcode】Candy(hard) 自己做出来了 但别人的更好
  7. Object-C内存管理基础
  8. 10、SQL Server 内置函数、临时对象、流程控制
  9. Announcement
  10. vue中动态样式不起作用? scoped了解一下
  11. (转)scikit-learn主要模块和基本使用方法
  12. 常用http/https以及socks5代理总结
  13. django使用session报错:no such table: django_session
  14. 35个java代码性能优化总结
  15. Maven中的pom.xml配置文件详解
  16. skopt学习之路1-函数介绍:dummy_minimize
  17. tomcat+java的web程序持续占cpu问题调试
  18. hibernate不调用save也保存上了
  19. python使用virtualenv
  20. 深度学习方法(十三):卷积神经网络结构变化——可变形卷积网络deformable convolutional networks

热门文章

  1. ORA-00918:未明确定义列解决
  2. POJ 1151 Atlantis 求矩阵面积并 扫描线 具体解释
  3. C# 获得当前 进程 或 线程的ID
  4. 编码策略:在ios编码中一定要少写全局变量。
  5. Extjs DateField onchange
  6. Unity3.x游戏开发经典教程 书例 100%完毕~
  7. Selenium2+python自动化44-元素定位参数化(find_element)
  8. Unity3d通用工具类之NGUI图集分解
  9. Linux下分割、合并PDF(pdftk),用于Linux系统的6款最佳PDF页面裁剪工具
  10. 使用socket编程实现一个简单的文件服务器