import java.util.Scanner;

class PGProduit {

/**
  Produit naif (suppose n >= 0)
  @param[in] a - un réel
  @param[in] n - un entier
  @return Produit a*n
*/

public static double produit1(double a, int n)
{
  return (n == 0 ? 0.0 : produit1(a,n - 1) + a);
}

/**
  Produit basé sur la parité (suppose n >= 0)
  @param[in] a - un réel
  @param[in] n - un entier
  @return Produit a*n
*/

public static double produit2(double a, int n)
{
  if (n == 0)
  {
    return 0.0;
  }
  else
  {
    double p = produit2(a,n / 2);
    return p + p + (n % 2 == 0 ? 0 : a);
  }
}

/**
  Produit basé sur la parité (suppose n >= 0)
  @param[in] a - un réel
  @param[in] n - un entier
  @return Produit a*n
*/

public static double produit3(double a, int n)
{
  if (n == 0)
  {
    return 0.0;
  }
  else
  {
    double p = produit3(a + a,n / 2);
    return p + (n % 2 == 0 ? 0 : a);
  }
}

public static void main(String[] args)
{
  Scanner input = new Scanner(System.in);
  double x;
  System.out.print("Un reel x? ");
  x = input.nextDouble();
  int n;
  System.out.print("Un entier n? ");
  n = input.nextInt();
  System.out.println("==> produit1(x,n) vaut " + produit1(x,n));
  System.out.println("==> produit2(x,n) vaut " + produit2(x,n));
  System.out.println("==> produit3(x,n) vaut " + produit3(x,n));
}

}
