Multiplica dos números de diferente base y representa el producto en otra base dada

Dados dos números N , M en las bases X , Y y otro en base P. La tarea es encontrar el producto de N y M y representar el producto en base P .

Ejemplos:

C++

// C++ code for the above approach
#include <bits/stdc++.h>
using namespace std;
 
// Convert Number from a given base
// to decimal
// Return the value of a char.
static int value(char c)
{
  if (c >= '0' && c <= '9')
    return (int)c - '0';
  else
    return (int)c - 'A' + 10;
}
 
// Function to convert a
// number from given base to decimal
int toDecimal(string s, int base)
{
  int length = s.length();
 
  // Initialize power of base and result
  int power = 1, ans = 0;
 
  // Decimal equivalent of s
  for (int i = length - 1; i >= 0; i--)
  {
    ans += value(s[i]) * power;
    power = power * base;
  }
 
  return ans;
}
 
// Function to convert decimal
// to any given base
char reverseValue(int n)
{
  if (n >= 0 && n <= 9)
    return (char)(n + 48);
  else
    return (char)(n - 10 + 65);
}
 
// Function to convert a given
// decimal number to a base 'base'
string toBase(int base, int num)
{
  string s = "";
 
  // Convert input number is given
  // base by repeatedly dividing it
  // by base and taking remainder
  while (num > 0)
  {
    s += reverseValue(num % base);
    num /= base;
  }
  string sb = "";
 
  // Append a string into StringBuilder
  sb += (s);
 
  // Reverse the result
  reverse(sb.begin(), sb.end());
  return sb;
}
 
// Function to find
// the product of N and M
void findProduct(string N, int X,
                 string M,
                 int Y, int P)
{
 
  // Convert N to decimal
  int decimalX = toDecimal(N, X);
 
  // Convert y to decimal
  int decimalY = toDecimal(M, Y);
 
  // Multiply the decimal numbers
  int product = decimalX * decimalY;
 
  // Convert product to base
  string result = toBase(P, product);
 
  // Print the result
  cout << (result);
}
 
// Driver code
int main()
{
  string N = "101", M = "110";
  int X = 2, Y = 2, P = 16;
  findProduct(N, X, M, Y, P);
  return 0;
}
 
// This code is contributed by Potta Lokesh

Java

// Java code to implement above approach
import java.io.*;
 
class GFG {
     
    // Function to find
    // the product of N and M
    static void findProduct(String N, int X,
                            String M,
                            int Y, int P)
    {
 
        // Convert N to decimal
        int decimalX = toDecimal(N, X);
 
        // Convert y to decimal
        int decimalY = toDecimal(M, Y);
 
        // Multiply the decimal numbers
        int product = decimalX * decimalY;
 
        // Convert product to base
        String result = toBase(P, product);
 
        // Print the result
        System.out.println(result);
    }
 
    // Convert Number from a given base
    // to decimal
    // Return the value of a char.
    static int value(char c)
    {
        if (c >= '0' && c <= '9')
            return (int)c - '0';
        else
            return (int)c - 'A' + 10;
    }
 
    // Function to convert a
    // number from given base to decimal
    static int toDecimal(String s, int base)
    {
        int length = s.length();
 
        // Initialize power of base and result
        int power = 1, ans = 0;
 
        // Decimal equivalent of s
        for (int i = length - 1; i >= 0; i--) {
            ans += value(s.charAt(i)) * power;
            power = power * base;
        }
 
        return ans;
    }
 
    // Function to convert decimal
    // to any given base
    static char reverseValue(int n)
    {
        if (n >= 0 && n <= 9)
            return (char)(n + 48);
        else
            return (char)(n - 10 + 65);
    }
 
    // Function to convert a given
    // decimal number to a base 'base'
    static String toBase(int base, int num)
    {
        String s = "";
 
        // Convert input number is given
        // base by repeatedly dividing it
        // by base and taking remainder
        while (num > 0) {
            s += reverseValue(num % base);
            num /= base;
        }
        StringBuilder sb = new StringBuilder();
 
        // Append a string into StringBuilder
        sb.append(s);
 
        // Reverse the result
        return new String(sb.reverse());
    }
     
    // Driver code
    public static void main(String[] args)
    {
        String N = "101", M = "110";
        int X = 2, Y = 2, P = 16;
        findProduct(N, X, M, Y, P);
    }
}

Python3

# Python code for the above approach
 
# Convert Number from a given base
# to decimal
# Return the value of a char.
def value(c):
 
  if (ord(c[0]) >= ord('0') and ord(c) <= ord('9')):
    return int(c)
  else:
    return ord(c[0]) - ord('A')  + 10
 
# Function to convert a
# number from given base to decimal
def toDecimal(s,base):
 
  length = len(s)
 
  # Initialize power of base and result
  power,ans = 1,0
 
  # Decimal equivalent of s
  for i in range(length-1,-1,-1):
 
    ans += value(s[i]) * power
    power = power * base
 
  return ans
 
# Function to convert decimal
# to any given base
def reverseValue(n):
 
  if (n >= 0 and n <= 9):
    return chr(n + 48)
  else:
    return chr(n - 10 + 65)
 
# Function to convert a given
# decimal number to a base 'base'
def toBase(base, num):
 
  s = ""
 
  # Convert input number is given
  # base by repeatedly dividing it
  # by base and taking remainder
  while (num > 0):
 
    s += reverseValue(num % base)
    num = (num//base)
 
  sb = ""
 
  # Append a string into StringBuilder
  sb += (s)
 
  # Reverse the result
  sb = sb[::-1]
  return sb
 
# Function to find
# the product of N and M
def findProduct(N, X, M, Y, P):
 
  # Convert N to decimal
  decimalX = toDecimal(N, X)
 
  # Convert y to decimal
  decimalY = toDecimal(M, Y)
 
  # Multiply the decimal numbers
  product = decimalX * decimalY
 
  # Convert product to base
  result = toBase(P, product)
 
  # Print the result
  print(result)
 
# Driver code
N, M = "101", "110"
X, Y, P = 2, 2, 16
findProduct(N, X, M, Y, P)
 
# This code is contributed by shinjanpatra

C#

// C# code to implement above approach
using System;
class GFG
{
 
  // Function to find
  // the product of N and M
  static void findProduct(String N, int X,
                          String M,
                          int Y, int P)
  {
 
    // Convert N to decimal
    int decimalX = toDecimal(N, X);
 
    // Convert y to decimal
    int decimalY = toDecimal(M, Y);
 
    // Multiply the decimal numbers
    int product = decimalX * decimalY;
 
    // Convert product to base
    String result = toBase(P, product);
 
    // Print the result
    Console.Write(result);
  }
 
  // Convert Number from a given base
  // to decimal
  // Return the value of a char.
  static int value(char c)
  {
    if (c >= '0' && c <= '9')
      return (int)c - '0';
    else
      return (int)c - 'A' + 10;
  }
 
  // Function to convert a
  // number from given base to decimal
  static int toDecimal(String s, int _base)
  {
    int length = s.Length;
 
    // Initialize power of base and result
    int power = 1, ans = 0;
 
    // Decimal equivalent of s
    for (int i = length - 1; i >= 0; i--)
    {
      ans += value(s[i]) * power;
      power = power * _base;
    }
 
    return ans;
  }
 
  // Function to convert decimal
  // to any given base
  static char reverseValue(int n)
  {
    if (n >= 0 && n <= 9)
      return (char)(n + 48);
    else
      return (char)(n - 10 + 65);
  }
 
  // Function to convert a given
  // decimal number to a base 'base'
  static String toBase(int _base, int num)
  {
    String s = "";
 
    // Convert input number is given
    // base by repeatedly dividing it
    // by base and taking remainder
    while (num > 0)
    {
      s += reverseValue(num % _base);
      num /= _base;
    }
    String sb = "";
 
    // Append a string into StringBuilder
    sb += s;
 
    // Reverse the result
    char[] arr = sb.ToCharArray();
    Array.Reverse(arr);
    return new string(arr);
  }
 
  // Driver code
  public static void Main()
  {
    String N = "101", M = "110";
    int X = 2, Y = 2, P = 16;
    findProduct(N, X, M, Y, P);
  }
}
 
// This code is contributed by saurabh_jaiswal.

Javascript

<script>
 
// JavaScript code for the above approach
 
 
// Convert Number from a given base
// to decimal
// Return the value of a char.
function value(c)
{
if (c.charCodeAt(0) >= '0'.charCodeAt(0) && c.charCodeAt(0) <= '9'.charCodeAt(0))
    return parseInt(c);
else
    return c.charCodeAt(0) - 'A'.charCodeAt(0) + 10;
}
 
// Function to convert a
// number from given base to decimal
function toDecimal(s,base)
{
let length = s.length;
 
// Initialize power of base and result
let power = 1, ans = 0;
 
// Decimal equivalent of s
for (let i = length - 1; i >= 0; i--)
{
    ans += value(s[i]) * power;
    power = power * base;
}
 
return ans;
}
 
// Function to convert decimal
// to any given base
function reverseValue(n)
{
if (n >= 0 && n <= 9)
    return String.fromCharCode(n + 48);
else
    return String.fromCharCode(n - 10 + 65);
}
 
// Function to convert a given
// decimal number to a base 'base'
function toBase(base, num)
{
let s = "";
 
// Convert input number is given
// base by repeatedly dividing it
// by base and taking remainder
while (num > 0)
{
    s += reverseValue(num % base);
    num = Math.floor(num/base);
}
let sb = "";
 
// Append a string into StringBuilder
sb += (s);
 
// Reverse the result
sb = sb.split("").reverse().join("");
return sb;
}
 
// Function to find
// the product of N and M
function findProduct(N, X, M, Y, P)
{
 
// Convert N to decimal
let decimalX = toDecimal(N, X);
 
// Convert y to decimal
let decimalY = toDecimal(M, Y);
 
// Multiply the decimal numbers
let product = decimalX * decimalY;
 
// Convert product to base
let result = toBase(P, product);
 
// Print the result
document.write(result,"</br>");
}
 
// Driver code
 
let N = "101", M = "110";
let X = 2, Y = 2, P = 16;
findProduct(N, X, M, Y, P);
 
// This code is contributed by shinjanpatra
 
</script>

Publicación traducida automáticamente

Artículo escrito por amrithabpatil y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *