# Check if the number formed by concatenating all array elements is a Harshad number or not

• Difficulty Level : Medium
• Last Updated : 01 Jul, 2021

Given an array arr[] consisting of N integers, the task is to check if the number formed by concatenating all the array elements is a Harshad number or not.

Examples:

Input: arr[] = { 1, 35, 69, 60}
Output: Yes
Explanation:
The number formed by concatenating array elements is “1356960”.
Sum of digits of the number = 1 + 3 + 5 + 6 + 9 + 6 + 0 = 30.
Since, the number is divisible by sum of its digits, the number is a “Harshad number”.

Input: arr[] = {1, 563, 9, 59, 7, 8}
Output: Yes

Approach: The idea is to convert all array elements to their equivalent strings and concatenate those strings. Follow the steps below to solve the problem:

1. Traverse the array arr[] and convert each array element to its equivalent string.
2. Concatenate all the strings in a variable, say S.
3. Initialize a variable, say sum, to store the sum of digits of the generated number.
4. Traverse the string S and update sum as sum += int (s[i]).
5. Initialize a variable, say N = 0, to store the number formed by joining all the characters of the string S mod sum.
6. Traverse the string S and update N as N = (N * 10 + int (S[i])) % sum.
7. Print Yes, if N = 0.
8. Otherwise, print No.

Below is the implementation of the above approach:

## C++

 `// CPP implementation``// of above approach``#include``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 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 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

 ``

Output:

`Yes`

Time Complexity: O(N)
Auxiliary Space: O(N)

My Personal Notes arrow_drop_up