Find minimum possible digit sum after adding a number d
Given a number n and a number d, we can add d to n as many times ( even 0 is possible ). The task is to find the minimum possible digit sum we can achieve by performing above operation.
Digit Sum is defined as the sum of digits of a number recursively until it is less than 10.
Examples:
Input: n = 2546, d = 124
Output: 1
2546 + 8*124 = 3538
DigitSum(3538)=1
Input: n = 123, d = 3
Output: 3
Approach:
- First observation here is to use %9 approach to find minimum possible digit sum of a number n. If modulo with 9 is 0 return 9 else return the remainder.
- Second observation is, a+d*(9k+l) modulo 9 is equivalent to a+d*l modulo 9, therefore, the answer to the query will be available in either no addition or first 8 additions of d, after which the digit sum will repeat.
Below is the implementation of above approach:
C++
#include <bits/stdc++.h>
using namespace std;
int digitsum( int n)
{
int r = n % 9;
if (r == 0)
return 9;
else
return r;
}
int find( int n, int d)
{
int minimum = 10;
for ( int i = 0; i < 9; i++) {
int current = (n + i * d);
minimum = min(minimum, digitsum(current));
}
return minimum;
}
int main()
{
int n = 2546, d = 124;
cout << "Minimum possible digitsum is :"
<< find(n, d);
return 0;
}
|
Java
import java.io.*;
public class gfg
{
public int digitsum( int n)
{
int r = n % 9 ;
if (r == 0 )
return 9 ;
else
return r;
}
public int find( int n, int d)
{
int minimum = 10 ;
for ( int i = 0 ; i < 9 ; i++) {
int current = (n + i * d);
minimum = Math.min(minimum, digitsum(current));
}
return minimum;
}
}
class geek
{
public static void main(String[]args)
{
gfg g = new gfg();
int n = 2546 , d = 124 ;
System.out.println( "Minimum possible digitsum is : " + (g.find(n, d)));
}
}
|
Python3
def digitsum(n):
r = n % 9 ;
if (r = = 0 ):
return 9 ;
else :
return r;
def find(n, d):
minimum = 10 ;
for i in range ( 9 ):
current = (n + i * d);
minimum = min (minimum,
digitsum(current));
return minimum;
n = 2546 ;
d = 124 ;
print ( "Minimum possible digitsum is :" ,
find(n, d));
|
C#
using System;
public class gfg
{
public int digitsum( int n)
{
int r = n % 9;
if (r == 0)
return 9;
else
return r;
}
public int find( int n, int d)
{
int minimum = 10;
for ( int i = 0; i < 9; i++) {
int current = (n + i * d);
minimum = Math.Min(minimum, digitsum(current));
}
return minimum;
}
}
class geek
{
public static void Main()
{
gfg g = new gfg();
int n = 2546, d = 124;
Console.WriteLine( "Minimum possible digitsum is : {0}" , (g.find(n, d)));
Console.Read();
}
}
|
PHP
<?php
function digitsum( $n )
{
$r = $n % 9;
if ( $r == 0)
return 9;
else
return $r ;
}
function find( $n , $d )
{
$minimum = 10;
for ( $i = 0; $i < 9; $i ++)
{
$current = ( $n + $i * $d );
$minimum = min( $minimum ,
digitsum( $current ));
}
return $minimum ;
}
$n = 2546; $d = 124;
echo "Minimum possible digitsum is :" ,
find( $n , $d );
?>
|
Javascript
<script>
function digitsum( n)
{
var r = n % 9;
if (r == 0)
return 9;
else
return r;
}
function find( n, d)
{
var minimum = 10;
for ( var i = 0; i < 9; i++) {
var current = (n + i * d);
minimum = Math.min(minimum, digitsum(current));
}
return minimum;
}
var n = 2546, d = 124;
document.write( "Minimum possible digitsum is :" + find(n, d));
</script>
|
Output:
Minimum possible digitsum is :1
Time Complexity: O(9)
Auxiliary Space: O(1)
Last Updated :
20 Aug, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...