Artifact 0a8206adef9888890030c149bad9e725bfa3696a
struct CountExpressions
{
static int add(int x, int y) { return x+y; }
static int sub(int x, int y) { return x-y; }
static int mul(int x, int y) { return x*y; }
int calcExpressions(int x, int y, int val)
{
int num[][4] = {
{x,x,y,y},
{x,y,x,y},
{x,y,y,x},
{y,x,x,y},
{y,x,y,x},
{y,y,x,x},
};
int (*op[])(int,int) = { &add, &sub, &mul };
int cnt = 0;
for(int a=0; a<6; ++a)
for(int i=0; i<3; ++i)
for(int j=0; j<3; ++j)
for(int k=0; k<3; ++k)
if( val == op[k]( op[j]( op[i](num[a][0], num[a][1]), num[a][2] ), num[a][3] ) )
++cnt;
return cnt;
}
};