HDU 5938 Four Operations 模拟

来源:互联网 发布:淘宝客服月总结报告 编辑:程序博客网 时间:2024/05/16 11:26


题目链接:https://vjudge.net/problem/HDU-5938

题意:输入一个字符串,从左到右依次插入+-×/,求所得的算式的最大值。

题解:算式一定是a+b-c*d/e的形式,c和d只分配一个数,a+b最大的情况只有两种,然后从前向后枚举e的值。

#include<bits/stdc++.h>using namespace std;#define ll long longchar s[25];int main(){    int T;    scanf("%d",&T);    int cas=1;    while(T--)    {        scanf("%s",s);        int l=strlen(s);        ll ans=-1000000;        for(int i=2;i<l-2;i++)        {            ll a,b,c,d,e;            a=0;            b=0;            for(int j=0;j<i-1;j++)            {                a=a*10+s[j]-'0';            }            for(int j=1;j<i;j++)            {                b=b*10+s[j]-'0';            }            b+=s[0]-'0';            a+=s[i-1]-'0';            c=s[i]-'0';            d=s[i+1]-'0';            e=0;            for(int j=i+2;j<l;j++)            {                e=e*10+s[j]-'0';            }            ans=max(ans,max(a,b)-(c*d)/e);        }        printf("Case #%d: %lld\n",cas++,ans);    }    return 0;}


原创粉丝点击