首页 > 代码库 > 2016年中国大学生程序设计竞赛(杭州)1006 Four Operations
2016年中国大学生程序设计竞赛(杭州)1006 Four Operations
Four Operations
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 38 Accepted Submission(s): 18
Problem Description
Little Ruins is a studious boy, recently he learned the four operations!
Now he want to use four operations to generate a number, he takes a string which only contains digits ‘1‘ - ‘9‘, and split it into 5 intervals and add the four operations ‘+‘, ‘-‘, ‘*‘ and ‘/‘ in order, then calculate the result(/ used as integer division).
Now please help him to get the largest result.
Now he want to use four operations to generate a number, he takes a string which only contains digits ‘1‘ - ‘9‘, and split it into 5 intervals and add the four operations ‘+‘, ‘-‘, ‘*‘ and ‘/‘ in order, then calculate the result(/ used as integer division).
Now please help him to get the largest result.
Input
First line contains an integer T, which indicates the number of test cases.
Every test contains one line with a string only contains digits ‘1‘-‘9‘.
Limits
1≤T≤105
5≤length of string≤20
Every test contains one line with a string only contains digits ‘1‘-‘9‘.
Limits
1≤T≤105
5≤length of string≤20
Output
For every test case, you should output ‘Case #x: y‘, where x indicates the case number and counts from 1 and y is the result.
Sample Input
112345
Sample Output
Case #1: 1
Source
2016年中国大学生程序设计竞赛(杭州)
Recommend
liuyiding
/*枚举减号,刚开始天真的以为,除数最多是两位......卡死。*/#include<bits/stdc++.h>#define ll long long#define INF 0x3fffffffffffffff#define N 22using 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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。