# Count the number of array elements whose digit sum are equal to K

The problem addressed here is about counting the number of array elements whose digit sum is equal to a given value K. The task requires analyzing an array of integers, calculating the sum of digits for each integer, and then counting how many of these sums match the given value K.

For instance, given an array of integers `[17, 123, 16, 60, 11, 23, 42]` and K being 6, we need to find the count of array elements whose digit sums are equal to 6.

## Problem Statement

The problem involves counting how many integers in an array have a digit sum equal to a given value K.

## Explanation with Example

Let's consider the example provided: `arr = [17, 123, 16, 60, 11, 23, 42]` and K is 6.

For each integer in the array, we calculate the sum of its digits:

• `17` → Digit sum: 1 + 7 = 8
• `123` → Digit sum: 1 + 2 + 3 = 6
• `16` → Digit sum: 1 + 6 = 7
• `60` → Digit sum: 6 + 0 = 6
• `11` → Digit sum: 1 + 1 = 2
• `23` → Digit sum: 2 + 3 = 5
• `42` → Digit sum: 4 + 2 = 6

Among these, `123`, `60`, and `42` have digit sums equal to 6, so the count is 3.

## Idea to Solve the Problem

To solve this problem, we can break down the process into a few key steps:

1. Define a function to calculate the sum of digits for an integer.
2. Iterate through the array and calculate the digit sum for each integer.
3. Count how many times the digit sum matches the given value K.

## Pseudocode

``````Function digitSum(number):
n = number (convert to positive if negative)
result = 0
while n is not 0:
result = result + (n % 10)
n = n / 10
return result

Function countKDigitSum(arr, n, k):
count = 0
for i from 0 to n - 1:
if digitSum(arr[i]) is k:
count = count + 1
print count

Main:
arr = [17, 123, 16, 60, 11, 23, 42]
n = length of arr
k = 6
countKDigitSum(arr, n, k)``````

## Algorithm Explanation

1. The `digitSum` function calculates the sum of digits for an integer, ensuring it works for negative integers as well.
2. The `countKDigitSum` function iterates through the array and counts how many times the digit sum matches the given value K.
3. The `Main` section initializes the array, finds its length, and calls the `countKDigitSum` function.

## Code Solution

``````// C Program for
// Count the number of array elements whose digit sum are equal to K
#include <stdio.h>

int digitSum(int number)
{
int n = number;
if (n < 0)
{
// Convert negative number to positive number
n = -n;
}
int result = 0;
while (n != 0)
{
// Adding last digit of a given number
result = result + (n % 10);
// Remove last digit
n = n / 10;
}
return result;
}
void countKDigitSum(int arr[], int n, int k)
{
int count = 0;
for (int i = 0; i < n; ++i)
{
if (digitSum(arr[i]) == k)
{
// Increase counter
count++;
}
}
printf("\n %d", count);
}
int main()
{
int arr[] = {
17 , 123 , 16 , 60 , 11 , 23 , 42
};
// Get the number of elements
int n = sizeof(arr) / sizeof(arr);
// k = 6
// ----------
// 1 + 2 + 3 = 6
// 6 + 0   = 6
// 4 + 2   = 4
// [123,60,42]
// Result = 3
countKDigitSum(arr, n, 6);
return 0;
}``````

#### Output

`` 3``
``````/*
Java program for
Count the number of array elements whose digit sum are equal to K
*/
public class Counting
{
public int digitSum(int number)
{
int n = number;
if (n < 0)
{
// Convert negative number to positive number
n = -n;
}
int result = 0;
while (n != 0)
{
// Adding last digit of a given number
result = result + (n % 10);
// Remove last digit
n = n / 10;
}
return result;
}
public void countKDigitSum(int[] arr, int n, int k)
{
int count = 0;
for (int i = 0; i < n; ++i)
{
if (digitSum(arr[i]) == k)
{
// Increase counter
count++;
}
}
System.out.print("\n " + count);
}
public static void main(String[] args)
{
int[] arr = {
17 , 123 , 16 , 60 , 11 , 23 , 42
};
// Get the number of elements
int n = arr.length;
// k = 6
// ----------
// 1 + 2 + 3 = 6
// 6 + 0   = 6
// 4 + 2   = 4
// [123,60,42]
// Result = 3
}
}``````

#### Output

`` 3``
``````// Include header file
#include <iostream>
using namespace std;
/*
C++ program for
Count the number of array elements whose digit sum are equal to K
*/
class Counting
{
public: int digitSum(int number)
{
int n = number;
if (n < 0)
{
// Convert negative number to positive number
n = -n;
}
int result = 0;
while (n != 0)
{
// Adding last digit of a given number
result = result + (n % 10);
// Remove last digit
n = n / 10;
}
return result;
}
void countKDigitSum(int arr[], int n, int k)
{
int count = 0;
for (int i = 0; i < n; ++i)
{
if (this->digitSum(arr[i]) == k)
{
// Increase counter
count++;
}
}
cout << "\n " << count;
}
};
int main()
{
int arr[] = {
17 , 123 , 16 , 60 , 11 , 23 , 42
};
// Get the number of elements
int n = sizeof(arr) / sizeof(arr);
// k = 6
// ----------
// 1 + 2 + 3 = 6
// 6 + 0   = 6
// 4 + 2   = 4
// [123,60,42]
// Result = 3
return 0;
}``````

#### Output

`` 3``
``````// Include namespace system
using System;
/*
Csharp program for
Count the number of array elements whose digit sum are equal to K
*/
public class Counting
{
public int digitSum(int number)
{
int n = number;
if (n < 0)
{
// Convert negative number to positive number
n = -n;
}
int result = 0;
while (n != 0)
{
// Adding last digit of a given number
result = result + (n % 10);
// Remove last digit
n = n / 10;
}
return result;
}
public void countKDigitSum(int[] arr, int n, int k)
{
int count = 0;
for (int i = 0; i < n; ++i)
{
if (this.digitSum(arr[i]) == k)
{
// Increase counter
count++;
}
}
Console.Write("\n " + count);
}
public static void Main(String[] args)
{
int[] arr = {
17 , 123 , 16 , 60 , 11 , 23 , 42
};
// Get the number of elements
int n = arr.Length;
// k = 6
// ----------
// 1 + 2 + 3 = 6
// 6 + 0   = 6
// 4 + 2   = 4
// [123,60,42]
// Result = 3
}
}``````

#### Output

`` 3``
``````package main
import "fmt"
/*
Go program for
Count the number of array elements whose digit sum are equal to K
*/
func digitSum(number int) int {
var n int = number
if n < 0 {
// Convert negative number to positive number
n = -n
}
var result int = 0
for (n != 0) {
// Adding last digit of a given number
result = result + (n % 10)
// Remove last digit
n = n / 10
}
return result
}
func countKDigitSum(arr[] int, n int, k int) {
var count int = 0
for i := 0 ; i < n ; i++ {
if digitSum(arr[i]) == k {
// Increase counter
count++
}
}
fmt.Print("\n ", count)
}
func main() {

var arr = [] int {17 , 123 , 16 , 60 , 11 , 23 , 42}
// Get the number of elements
var n int = len(arr)
// k = 6
// ----------
// 1 + 2 + 3 = 6
// 6 + 0   = 6
// 4 + 2   = 4
// [123,60,42]
// Result = 3
countKDigitSum(arr, n, 6)
}``````

#### Output

`` 3``
``````<?php
/*
Php program for
Count the number of array elements whose digit sum are equal to K
*/
class Counting
{
public	function digitSum(\$number)
{
\$n = \$number;
if (\$n < 0)
{
// Convert negative number to positive number
\$n = -\$n;
}
\$result = 0;
while (\$n != 0)
{
// Adding last digit of a given number
\$result = \$result + (\$n % 10);
// Remove last digit
\$n = (int)(\$n / 10);
}
return \$result;
}
public	function countKDigitSum(\$arr, \$n, \$k)
{
\$count = 0;
for (\$i = 0; \$i < \$n; ++\$i)
{
if (\$this->digitSum(\$arr[\$i]) == \$k)
{
// Increase counter
\$count++;
}
}
echo("\n ".\$count);
}
}

function main()
{
\$arr = array(17, 123, 16, 60, 11, 23, 42);
// Get the number of elements
\$n = count(\$arr);
// k = 6
// ----------
// 1 + 2 + 3 = 6
// 6 + 0   = 6
// 4 + 2   = 4
// [123,60,42]
// Result = 3
}
main();``````

#### Output

`` 3``
``````/*
Node JS program for
Count the number of array elements whose digit sum are equal to K
*/
class Counting
{
digitSum(number)
{
var n = number;
if (n < 0)
{
// Convert negative number to positive number
n = -n;
}
var result = 0;
while (n != 0)
{
// Adding last digit of a given number
result = result + (n % 10);
// Remove last digit
n = parseInt(n / 10);
}
return result;
}
countKDigitSum(arr, n, k)
{
var count = 0;
for (var i = 0; i < n; ++i)
{
if (this.digitSum(arr[i]) == k)
{
// Increase counter
count++;
}
}
process.stdout.write("\n " + count);
}
}

function main()
{
var arr = [17, 123, 16, 60, 11, 23, 42];
// Get the number of elements
var n = arr.length;
// k = 6
// ----------
// 1 + 2 + 3 = 6
// 6 + 0   = 6
// 4 + 2   = 4
// [123,60,42]
// Result = 3
}
main();``````

#### Output

`` 3``
``````#    Python 3 program for
#    Count the number of array elements whose digit sum are equal to K
class Counting :
def digitSum(self, number) :
n = number
if (n < 0) :
#  Convert negative number to positive number
n = -n

result = 0
while (n != 0) :
#  Adding last digit of a given number
result = result + (n % 10)
#  Remove last digit
n = int(n / 10)

return result

def countKDigitSum(self, arr, n, k) :
count = 0
i = 0
while (i < n) :
if (self.digitSum(arr[i]) == k) :
#  Increase counter
count += 1

i += 1

print("\n ", count, end = "")

def main() :
arr = [17, 123, 16, 60, 11, 23, 42]
#  Get the number of elements
n = len(arr)
#  k = 6
#  ----------
#  1 + 2 + 3 = 6
#  6 + 0   = 6
#  4 + 2   = 4
#  [123,60,42]
#  Result = 3

if __name__ == "__main__": main()``````

#### Output

``  3``
``````#    Ruby program for
#    Count the number of array elements whose digit sum are equal to K
class Counting
def digitSum(number)
n = number
if (n < 0)
#  Convert negative number to positive number
n = -n
end

result = 0
while (n != 0)
#  Adding last digit of a given number
result = result + (n % 10)
#  Remove last digit
n = n / 10
end

return result
end

def countKDigitSum(arr, n, k)
count = 0
i = 0
while (i < n)
if (self.digitSum(arr[i]) == k)
#  Increase counter
count += 1
end

i += 1
end

print("\n ", count)
end

end

def main()
arr = [17, 123, 16, 60, 11, 23, 42]
#  Get the number of elements
n = arr.length
#  k = 6
#  ----------
#  1 + 2 + 3 = 6
#  6 + 0   = 6
#  4 + 2   = 4
#  [123,60,42]
#  Result = 3
end

main()``````

#### Output

`` 3``
``````/*
Scala program for
Count the number of array elements whose digit sum are equal to K
*/
class Counting()
{
def digitSum(number: Int): Int = {
var n: Int = number;
if (n < 0)
{
// Convert negative number to positive number
n = -n;
}
var result: Int = 0;
while (n != 0)
{
// Adding last digit of a given number
result = result + (n % 10);
// Remove last digit
n = n / 10;
}
return result;
}
def countKDigitSum(arr: Array[Int], n: Int, k: Int): Unit = {
var count: Int = 0;
var i: Int = 0;
while (i < n)
{
if (digitSum(arr(i)) == k)
{
// Increase counter
count += 1;
}
i += 1;
}
print("\n " + count);
}
}
object Main
{
def main(args: Array[String]): Unit = {
var task: Counting = new Counting();
var arr: Array[Int] = Array(17, 123, 16, 60, 11, 23, 42);
// Get the number of elements
var n: Int = arr.length;
// k = 6
// ----------
// 1 + 2 + 3 = 6
// 6 + 0   = 6
// 4 + 2   = 4
// [123,60,42]
// Result = 3
}
}``````

#### Output

`` 3``
``````import Foundation;
/*
Swift 4 program for
Count the number of array elements whose digit sum are equal to K
*/
class Counting
{
func digitSum(_ number: Int) -> Int
{
var n: Int = number;
if (n < 0)
{
// Convert negative number to positive number
n = -n;
}
var result: Int = 0;
while (n  != 0)
{
// Adding last digit of a given number
result = result + (n % 10);
// Remove last digit
n = n / 10;
}
return result;
}
func countKDigitSum(_ arr: [Int], _ n: Int, _ k: Int)
{
var count: Int = 0;
var i: Int = 0;
while (i < n)
{
if (self.digitSum(arr[i]) == k)
{
// Increase counter
count += 1;
}
i += 1;
}
print("\n ", count, terminator: "");
}
}
func main()
{
let arr: [Int] = [17, 123, 16, 60, 11, 23, 42];
// Get the number of elements
let n: Int = arr.count;
// k = 6
// ----------
// 1 + 2 + 3 = 6
// 6 + 0   = 6
// 4 + 2   = 4
// [123,60,42]
// Result = 3
}
main();``````

#### Output

``  3``
``````/*
Kotlin program for
Count the number of array elements whose digit sum are equal to K
*/
class Counting
{
fun digitSum(number: Int): Int
{
var n: Int = number;
if (n < 0)
{
// Convert negative number to positive number
n = -n;
}
var result: Int = 0;
while (n != 0)
{
// Adding last digit of a given number
result = result + (n % 10);
// Remove last digit
n = n / 10;
}
return result;
}
fun countKDigitSum(arr: Array < Int > , n: Int, k: Int): Unit
{
var count: Int = 0;
var i: Int = 0;
while (i < n)
{
if (this.digitSum(arr[i]) == k)
{
// Increase counter
count += 1;
}
i += 1;
}
print("\n " + count);
}
}
fun main(args: Array < String > ): Unit
{
val arr: Array < Int > = arrayOf(17, 123, 16, 60, 11, 23, 42);
// Get the number of elements
val n: Int = arr.count();
// k = 6
// ----------
// 1 + 2 + 3 = 6
// 6 + 0   = 6
// 4 + 2   = 4
// [123,60,42]
// Result = 3
}``````

#### Output

`` 3``

This output indicates that there are 3 elements in the array whose digit sums are equal to K (6).

## Time Complexity Analysis

• The `digitSum` function has a time complexity of O(log n), where n is the input number, as it involves dividing the number by 10 in each iteration of the loop.
• The `countKDigitSum` function has a time complexity of O(m * log n), where m is the number of elements in the array and n is the maximum value among the array elements. This is because it calls the `digitSum` function for each array element.
• Thus, the overall time complexity of the given code is dominated by the `countKDigitSum` function, which is O(m * log n).

## Comment

Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.