Compruebe si el número formado al concatenar todos los elementos de la array es un número de Harshad o no

Dada una array arr[] que consta de N enteros, la tarea es verificar si el número formado al concatenar todos los elementos de la array es un número de Harshad o no.

Ejemplos:

Entrada : arr[] = { 1, 35, 69, 60}
Salida:
Explicación:
El número formado por la concatenación de elementos de array es «1356960».
Suma de dígitos del número = 1 + 3 + 5 + 6 + 9 + 6 + 0 = 30. 
Dado que el número es divisible por la suma de sus dígitos, el número es un «número de Harshad».

Entrada: arr[] = {1, 563, 9, 59, 7, 8}
Salida:

 

Enfoque: la idea es convertir todos los elementos de la array en sus strings equivalentes y concatenar esas strings. Siga los pasos a continuación para resolver el problema:

  1. Recorra la array arr[] y convierta cada elemento de la array en su string equivalente.
  2. Concatene todas las strings en una variable, digamos S.
  3. Inicialice una variable, digamos suma, para almacenar la suma de dígitos del número generado.
  4. Recorra la string S y actualice sum como sum += int (s[i]).
  5. Inicialice una variable, digamos N = 0, para almacenar el número formado al unir todos los caracteres de la string S mod sum.
  6. Recorra la string S y actualice N como N = (N * 10 + int (S[i])) % sum.
  7. Imprimir Sí, si N = 0.
  8. De lo contrario , imprima No.

A continuación se muestra la implementación del enfoque anterior:

C++

// CPP implementation
// of above approach
#include<bits/stdc++.h>
using namespace std;
 
// Function to check whether n
// is a harshad number or not
int checkHarshad(string n)
{
 
  // Stores the sum of digits
  int sum = 0;
 
  // Stores the remainder
  int N = 0;
 
  // Increment sum
  for (int c = 0; c < n.length(); c++)
    sum += (n);
 
  for (int c = 0; c < n.length(); c++)
  {
    N = N + (N * 10 + (n));
    N %= sum;
  }
  return (N != 0);
}
 
// Function to check if concatenation
// of elements from the array arr[]
// is a harshad number or not
bool combineArray(vector<int> lis)
{
 
  // Stores the concatenated number
  string st = "";
 
  // Traverse the array
  for(auto el: lis)
  {
 
    // Concatenate the string
    st += to_string(el);
  }
 
  if(checkHarshad(st))
    return true;
  else
    return false;
}
 
// Driver Code
int main()
{
 
  // Input
  vector<int>arr{1, 35, 69, 60};
 
  // Function call to check if
  // concatenation of elements of
  // arr[] is a harshad number
  if(combineArray(arr))
    cout << "Yes";
  else
    cout << "No";
}
 
// This code is contributed by ipg2016107.

Java

/*package whatever //do not write package name here */
 
import java.io.*;
import java.util.ArrayList;
 
class GFG {
 
  // Function to check whether n
  // is a harshad number or not
  public static boolean checkHarshad(String n)
  {
 
    // Stores the sum of digits
    int sum = 0;
 
    // Stores the remainder
    int N = 0;
 
    // Increment sum
    for (int c = 0; c < n.length(); c++) {
      sum += Character.getNumericValue(n.charAt(c));
    }
    for (int c = 0; c < n.length(); c++) {
      N = N
        + (N * 10
           + (Character.getNumericValue(
             n.charAt(c))));
      N %= sum;
    }
    if (N == 0) {
      return true;
    }
    return false;
  }
 
  // Function to check if concatenation
  // of elements from the array arr[]
  // is a harshad number or not
  public static boolean
    combineArray(ArrayList<Integer> list)
  {
 
    // Stores the concatenated number
    String st = "";
 
    // Traverse the array
    for (int i = 0; i < list.size(); i++)
    {
 
      // Concatenate the string
      st += Integer.toString(list.get(i));
    }
 
    if (checkHarshad(st)) {
      return true;
    }
    return false;
  }
 
  // Driver Code
  public static void main(String[] args)
  {
 
    // Input
    ArrayList<Integer> list = new ArrayList<>();
    list.add(1);
    list.add(35);
    list.add(69);
    list.add(60);
     
    // Function call to check if
    // concatenation of elements of
    // arr[] is a harshad number
    if (combineArray(list))
      System.out.println("Yes");
    else
      System.out.println("No");
  }
}
 
// This code is contributed by aditya7409

Python3

# Python implementation
# of above approach
 
# Function to check whether n
# is a harshad number or not
def checkHarshad(n):
   
    # Stores the sum of digits
    sum = 0
 
    # Stores the remainder
    N = 0
     
    # Increment sum
    for c in n:
        sum += int(c)
     
    for c in n:
        N = N + (N*10+int(c))
        N %= sum
 
    return N == 0
 
# Function to check if concatenation
# of elements from the array arr[]
# is a harshad number or not
def combineArray(lis):
 
    # Stores the concatenated number
    string=""
 
    # Traverse the array
    for el in lis:
 
        # Convert to equivalent string
        el = str(el)
 
        # Concatenate the string
        string = string + el
 
    if(checkHarshad(string)):
        return True
    else:
        return False
 
 
# Driver Code
 
# Input
arr=[1, 35, 69, 60]
 
# Function call to check if
# concatenation of elements of
# arr[] is a harshad number
if(combineArray(arr)):
    print("Yes")
else:
    print("No")

C#

// C# program for the above approach
using System;
using System.Collections.Generic;
 
class GFG
{
     
  // Function to check whether n
  // is a harshad number or not
  public static bool checkHarshad(string n)
  {
 
    // Stores the sum of digits
    int sum = 0;
 
    // Stores the remainder
    int N = 0;
 
    // Increment sum
    for (int c = 0; c < n.Length; c++) {
      sum += (int)Char.GetNumericValue(n);
    }
    for (int c = 0; c < n.Length; c++) {
      N = N
        + (N * 10
           + (int)(Char.GetNumericValue(
             n)));
      N %= sum;
    }
    if (N == 0) {
      return true;
    }
    return false;
  }
 
  // Function to check if concatenation
  // of elements from the array arr[]
  // is a harshad number or not
  static bool
    combineArray(List<int> list)
  {
 
    // Stores the concatenated number
    string st = "";
 
     
     st += string.Join("", list);
 
    if (checkHarshad(st)) {
      return true;
    }
    return false;
  }
 
// Driver code
static void Main()
{
    List<int> list = new List<int>();
    list.Add(1);
    list.Add(35);
    list.Add(69);
    list.Add(60);
     
    // Function call to check if
    // concatenation of elements of
    // arr[] is a harshad number
    if (combineArray(list))
      Console.WriteLine("Yes");
    else
      Console.WriteLine("No");
}
}
 
// This code is contributed susmitakundugoaldanga.

Javascript

<script>
// Javascript implementation
// of above approach
 
// Function to check whether n
// is a harshad number or not
function checkHarshad(n)
{
 
  // Stores the sum of digits
  var sum = 0;
 
  // Stores the remainder
  var N = 0;
 
  // Increment sum
  for (var c = 0; c < n.length; c++)
    sum += (n);
 
  for (var c = 0; c < n.length; c++)
  {
    N = N + (N * 10 + (n));
    N %= sum;
  }
  return (N != 0);
}
 
// Function to check if concatenation
// of elements from the array arr[]
// is a harshad number or not
function combineArray(lis)
{
 
  // Stores the concatenated number
  var st = "";
 
  // Traverse the array
  for(var el in lis)
  {
 
    // Concatenate the string
    st += (el.toString());
  }
 
  if(checkHarshad(st))
    return true;
  else
    return false;
}
 
// Driver Code
// Input
var arr = [1, 35, 69, 60];
// Function call to check if
// concatenation of elements of
// arr[] is a harshad number
if(combineArray(arr))
  document.write( "Yes");
else
  document.write( "No");
   
</script>
Producción: 

Yes

 

Complejidad temporal: O(N)
Espacio auxiliar: O(N)

Publicación traducida automáticamente

Artículo escrito por vikkycirus 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 *