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: Sí
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: Sí
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:
- Recorra la array arr[] y convierta cada elemento de la array en su string equivalente.
- Concatene todas las strings en una variable, digamos S.
- Inicialice una variable, digamos suma, para almacenar la suma de dígitos del número generado.
- Recorra la string S y actualice sum como sum += int (s[i]).
- Inicialice una variable, digamos N = 0, para almacenar el número formado al unir todos los caracteres de la string S mod sum.
- Recorra la string S y actualice N como N = (N * 10 + int (S[i])) % sum.
- Imprimir Sí, si N = 0.
- 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>
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