Subtract the Product and Sum of Digits of an Integer

  • Time:2020-09-15 16:10:27
  • Class:Weblog
  • Read:18

Given an integer number n, return the difference between the product of its digits and the sum of its digits.

Example 1:
Input: n = 234
Output: 15
Explanation:
Product of digits = 2 * 3 * 4 = 24
Sum of digits = 2 + 3 + 4 = 9
Result = 24 – 9 = 15

Example 2:
Input: n = 4421
Output: 21
Explanation:
Product of digits = 4 * 4 * 2 * 1 = 32
Sum of digits = 4 + 4 + 2 + 1 = 11
Result = 32 – 11 = 21

Constraints:
1 <= n <= 10^5

Hints:
How to compute all digits of the number?
Use modulus operator (%) to compute the last digit.
Generalise modulus operator idea to compute all digits.

leetcode-debugger Subtract the Product and Sum of Digits of an Integer algorithms c / c++ math programming languages python

leetcode-debugger

To get the digits of a integer, we can iteratedly divide the integer by ten, and retrieve the right-most digit by using modulous operator (%). The time complexity is O(lgN).

1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution {
public:
    int subtractProductAndSum(int n) {
        int sum = 0;
        int product = 1;
        while (n > 0) {
            sum += n % 10;
            product *= n % 10;
            n /= 10;
        }
        return product - sum;
    }
};
class Solution {
public:
    int subtractProductAndSum(int n) {
        int sum = 0;
        int product = 1;
        while (n > 0) {
            sum += n % 10;
            product *= n % 10;
            n /= 10;
        }
        return product - sum;
    }
};

The C++ code above requires O(1) constant space. And in Python, you could convert the integer into string, join them with a space, then split them into array of digit strings, finally convert them into list of digits by using the map function.

1
2
3
4
5
6
7
from operator import mul
from functools import reduce
 
class Solution:
    def subtractProductAndSum(self, n: int) -> int:
        temp = list(map(int, ' '.join(str(n)).split()))
        return reduce(mul, temp, 1) - sum(temp)
from operator import mul
from functools import reduce

class Solution:
    def subtractProductAndSum(self, n: int) -> int:
        temp = list(map(int, ' '.join(str(n)).split()))
        return reduce(mul, temp, 1) - sum(temp)

Then, we can compute the produce by using the reduce function, with the mul operator. The sum of digits can be just obtained via the sum() function.

–EOF (The Ultimate Computing & Technology Blog) —

Recommend:
Summits set epoch-making milestone in history of China-Arab ties
In the face of COVID-19 pandemic, China and Arab countries have
15 Macao residents qualify as candidates for deputies to nationa
Study finds genetic solution to pre-harvest sprouting in rice, w
Bodybuilders dying as coaches, judges encourage extreme measures
Malta's Marsaskala, China's Dujiangyan sign sister city agreemen
U.S. mortgage applications continue slide amid surging interest
Russian, UAE presidents discuss bilateral cooperation over phone
Hate crimes in U.S. Los Angeles County rise to highest level sin
Chinese mainland reports 4,031 new local confirmed COVID-19 case
Share:Facebook Twitter
Comment list
Comment add