[Cpp]
// Recursive memory
# Include <iostream>
# Include <cstring>
Using namespace std;
Int d [305] [305];
Int f (int I, int j)
{
If (d [I] [j]! =-1) return d [I] [j];
If (I = 1) return d [I] [j] = J-1;
If (j = 1) return d [I] [j] = I-1;
If (I % 2 = 0) return d [I] [j] = 2 * f (I/2, j) + 1;
Else if (j % 2 = 0) return d [I] [j] = 2 * f (I, j/2) + 1;
Else return d [I] [j] = f (I, J-1) + f (I, 1) + 1;
}
Int main (int argc, char * argv [])
{
Int m, n;
While (cin> m> n)
{Memset (d,-1, sizeof (d ));
Cout <f (m, n) <endl;
}
Return 0;
}
// Recursive memory
# Include <iostream>
# Include <cstring>
Using namespace std;
Int d [305] [305];
Int f (int I, int j)
{
If (d [I] [j]! =-1) return d [I] [j];
If (I = 1) return d [I] [j] = J-1;
If (j = 1) return d [I] [j] = I-1;
If (I % 2 = 0) return d [I] [j] = 2 * f (I/2, j) + 1;
Else if (j % 2 = 0) return d [I] [j] = 2 * f (I, j/2) + 1;
Else return d [I] [j] = f (I, J-1) + f (I, 1) + 1;
}
Int main (int argc, char * argv [])
{
Int m, n;
While (cin> m> n)
{Memset (d,-1, sizeof (d ));
Cout <f (m, n) <endl;
}
Return 0;
}
[Cpp]
// Find the rule
# Include <iostream>
Using namespace std;
Int main (int argc, char * argv [])
{
Int m, n;
While (cin> m> n)
{
Cout <m * n-1 <endl;
}
Return 0;
}
// Find the rule
# Include <iostream>
Using namespace std;
Int main (int argc, char * argv [])
{
Int m, n;
While (cin> m> n)
{
Cout <m * n-1 <endl;
}
Return 0;
}