uva10700 - Camel trading(无括号的表达式)
大水题,不过我要声明一点,::
uva提交系统上对long long 的标识符是lld,而不是I64d。
代码如下:
#include <cstdio> #include <cstring> int num[20]; char ope[20]; long long print_min(int n) { long long tt[20], cur = 0, ans = 0; tt[0] = num[0]; for(int i = 1; i < n; i++) { if(ope[i-1]=='*') tt[cur]*=num[i]; else tt[++cur] = num[i]; } for(int i = 0; i <= cur; i++) ans+=tt[i]; return ans; } long long print_max(int n) { long long tt[20], cur = 0, ans = 1; tt[0] = num[0]; for(int i = 1; i < n; i++) { if(ope[i-1]=='+') tt[cur]+=num[i]; else tt[++cur] = num[i]; } for(int i = 0; i <= cur; i++) ans*=tt[i]; return ans; } int main () { int t, n; scanf("%d",&t); getchar(); while(t--) { for(int i = 0; ; i++) { scanf("%d%c",&num[i],&ope[i]); if(ope[i]=='\n') { n = i+1; break;} } printf("The maximum and minimum are %lld and %lld.\n",print_max(n),print_min(n)); } return 0; }