#include <iostream> using namespace std; int whereT[] = {1,3,5,6 }; int cal(int *stack) { for(int i = 4; i >= 0; i-=2) { switch(stack[i]) { case -1: // '+' stack[i] = stack[i + 2] + stack[i + 1]; break; case -2: // '-' stack[i] = stack[i + 2] - stack[i + 1]; break; case -3: stack[i] = stack[i + 2] * stack[i + 1]; break; case -4: if(stack[i + 1] == 0) stack[i] = 0; else { stack[i] = stack[i + 2] / stack[i + 1]; if(stack[i] * stack[i + 1] != stack[i + 2]) return 0; } break; } } return stack[0]; } char opChar[] = {' ', '+', '-', '*', '/'}; void place(int index, int mask, int *stack, int m[]) { if(index == 4) { int tmp[] = {stack[0], stack[2], stack[4]}; int c = cal(stack); stack[0] = tmp[0]; stack[2] = tmp[1]; stack[4] = tmp[2]; if(c == 24) cout << stack[6] << opChar[-1 * stack[4]] << stack[5] << opChar[ -1 * stack[2]] << stack[3] << opChar[-1 * stack[0]] << stack[1] << endl; return; } for(int i = 0; i < 4; i++) { if((mask & 1 << i) == 0) { stack[whereT[index]] = m[i]; mask |= 1 << i; place(index + 1, mask, stack, m); mask &= (63 - (1 << i)); } } } void cal24(int m[]) { int stack[7]; for(stack[0] = -1; stack[0] >= -4; stack[0]--) for(stack[2] = -1; stack[2] >= -4; stack[2]--) for(stack[4] = -1; stack[4] >= -4; stack[4]--) { int mmask = 0; int index = 0; place(index, mmask, stack, m); } } int main() { while(true) { int m[4]; for(int i = 0; i < 4; i ++) cin >> m[i]; cal24(m); } }