HDU5938.Four Operations
来源:互联网 发布:电脑版地图软件 编辑:程序博客网 时间:2024/05/22 00:35
题目大意:输入一个数字串(不包括0)s,将"+","-","*","/",依次插入数字串中,求经过运算后能得到的最大结果。
题解:若想得到最大结果,则"-"前面那部分尽可能大,后面那部分尽可能小,要使相加最大,则必定为一位数加多位数或多位数加一位数,要使相乘结果尽可能小,则只能是一位数乘以一位数,结果最大为两位数(9*9=81),故最后除数可以为一位数或二位数,所以总共四种情况,比较即可。
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;char str[25];long long a[25],ans;long long add(int m,int n)//得到多位数{ long long sum = 0; int i; for(i=m; i<=n; i++) sum = (sum*10) + a[i]; return sum;}int main(){ int T,i; scanf("%d",&T); int k = T; while(T--) { scanf("%s",str); int len = strlen(str); for(i=0; i<len; i++) a[i] = str[i]-'0';//将字符型转化为数字 ans = a[0]+add(1,len-4)-a[len-3]*a[len-2]/a[len-1];//一位数加多位数 ans = max(ans,add(0,len-5)+a[len-4]-a[len-3]*a[len-2]/a[len-1]);//一位数加多位数与多位数加一位数比较 if(len>5) { int m = add(len-2,len-1); ans = max(ans,a[0]+add(1,len-5)-a[len-4]*a[len-3]/m);//除以一位数与除以二位数比较 ans = max(ans,add(0,len-6)+a[len-5]-a[len-4]*a[len-3]/m); } printf("Case #%d: %lld\n",k-T,ans); } return 0;}
阅读全文
0 0
- hdu5938 Four Operations 贪心
- hdu5938 Four Operations(贪心)
- HDU5938-Four Operations
- HDU5938 Four Operations
- HDU5938.Four Operations
- CCPC杭州站 HDU5938 Four Operations 贪心 枚举
- HDU5938 Four Operations (模拟) 2016年中国大学生程序设计竞赛(杭州)
- HDU 5938 Four Operations
- hdu 5938 Four Operations
- hdu 5938 Four Operations
- Four Operations HDU
- hdu 5938 Four Operations【贪心】
- hdu 5938 Four Operations 模拟
- HDU 5938 Four Operations 贪心
- HDU 5938 Four Operations 模拟
- HDU 5938 Four Operations(思维)
- HDU-5938 Four Operations(字符串处理)
- HDU 5938 Four Operations 想法题
- 页面间传数据的中文乱码问题(第七周啦)
- ECMA-Script5
- spring四种依赖注入方式
- hdu 6129(找规律)
- Hive 之 -e -f -i
- HDU5938.Four Operations
- 输入结束快捷键
- Java项目改造为Web项目
- Spring使用静态工厂方法创建Bean
- 前缀中缀后缀表达式
- 企业级电商平台-前端搭建
- ionic 显示手机本地图片
- list,set,map和array的最全总结(2)
- JNI开发基础系列--链接第三方动态库