您的位置:首页 > 运维架构

HDU 5938 Four Operations(2016年中国大学生程序设计竞赛(杭州))

2016-10-30 21:51 423 查看

题目分析

吐槽:上面一篇博客怎么没法继续写了!!搞完现场赛自己花时间搭一个!

题目分析

首先我们要让减号后面的要小,因为我们长度大于6是选用最后三位做减乘和除,但是当长度等于6的时候有可能不成立,比如111991。剩余的瞎搞就可以了。。

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 35;
#define LL long long
char s[maxn];

LL change(char s[], int i, int j){
LL ret = 0;
for(int k = i; k <= j; k++)
ret = ret*10 + (s[k] - '0');
return ret;
}

int main(){
int T;
scanf("%d", &T);
for(int kase = 1; kase <= T; kase++){
scanf("%s", s);
int len = strlen(s);
int a = change(s, len-3, len-3);
int b = change(s, len-2, len-2);
int c = change(s, len-1, len-1);
a = a*b/c;
printf("Case #%d: ", kase);
if(len == 5){
int x = change(s, 0, 0);
int y = change(s, 1, 1);
printf("%d\n", x+y-a);
continue;
}
LL temp = max(change(s, 0, 0) + change(s, 1, len-4), change(s, 0, len-5) + change(s,len-4,len-4));
temp -= a;
a = change(s, len-4, len-4);
b = change(s, len-3, len-3);
c = change(s, len-2, len-1);
a = a*b/c;
LL tmp = max(change(s, 0, 0) + change(s, 1, len-5), change(s, 0, len-6) + change(s,len-5,len-5));
tmp -= a;
printf("%I64d\n", max(temp, tmp));
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐