#include <stdio.h>
int multiply_1(unsigned int x,unsigned int y);
int multiply_2(unsigned int x,unsigned int y);
int multiply_3(unsigned int x,unsigned int y);
int main()
{
unsigned int x,y;
scanf("%u%u", &x,&y);
printf("1. %u*%u=%u\n",x,y,multiply_1(x,y));
printf("2. %u*%u=%u\n",x,y,multiply_2(x,y));
printf("3. %u*%u=%u\n",x,y,multiply_3(x,y));
return 0;
}
int multiply_1(unsigned int x,unsigned int y)
{
unsigned int p=0;
while(y-->0)
p+=x;
return p;
}
int multiply_2(unsigned int x,unsigned int y)
{
unsigned int p=0;
while(y)
{
if(y&1)
p+=x;
x<<=1;
y>>=1;
}
return p;
}
int multiply_3(unsigned int x,unsigned int y)
{
if(y==0)
return 0;
else if(y==1)
return x;
else
return multiply_3(x,y>>1) + multiply_3(x,y-(y>>1)); // Use right shift 1 bit instead of divide by 2
}