Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 38 Accepted Submission(s): 18
/* 枚举减号,刚开始天真的以为,除数最多是两位......卡死。 */ #include<bits/stdc++.h> #define ll long long #define INF 0x3fffffffffffffff #define N 22 using namespace std; string op; ll right(string s) { ll e=0; int n=s.size(); for(int i=2;i<n;i++) e=e*10+s[i]-‘0‘; //cout<<c<<" "<<d<<" "<<e<<endl; ll ans=(s[0]-‘0‘)*(s[1]-‘0‘)/e; return ans; } ll left(string s)//减号左边的部分 { ll cur1=0,cur2=0; int n=s.size(); for(int i=1;i<n;i++) cur1=cur1*10+(s[i]-‘0‘); cur1+=s[0]-‘0‘; for(int i=0;i<n-1;i++) cur2=cur2*10+(s[i]-‘0‘); cur2+=s[n-1]-‘0‘; //cout<<"max(cur1,cur2)="<<max(cur1,cur2)<<" "; return max(cur1,cur2); } ll solve(string s) { ///枚举减号 ll cur=-INF,s1,s2; int n=s.size(); for(int i=2;i<=n-3;i++) { s1=left(s.substr(0,i)); s2=right(s.substr(i,n-i)); //cout<<s1<<" "<<s2<<endl; cur=max(cur,s1-s2); } printf("%lld\n",cur); } int t; int main() { //freopen("C:\\Users\\acer\\Desktop\\in.txt","r",stdin); scanf("%d",&t); for(int Case=1;Case<=t;Case++) { printf("Case #%d: ",Case); cin>>op; solve(op); } return 0; }
2016年中国大学生程序设计竞赛(杭州)1006 Four Operations
原文:http://www.cnblogs.com/wuwangchuxin0924/p/6011471.html