我们只需要依次取出数字 n 中的各位数字,并计算各个数字的乘积 m 以及数字和 s,最后返回 m - s 即可。
我们可以依次取出 n 的最低位来得到 n 的各位数字:
通过「取模」操作 n \bmod 10 得到此时 n 的最低位。
通过「整除」操作 n = \lfloor n}{10} \rfloor 来去掉当前 n 的最低位。
代码
[sol1-C++]
1 2 3 4 5 6 7 8 9 10 11 12 13
classSolution { public: intsubtractProductAndSum(int n){ int m = 1, s = 0; while (n) { int x = n % 10; n /= 10; m *= x; s += x; } return m - s; } };
[sol1-Java]
1 2 3 4 5 6 7 8 9 10 11 12
classSolution { publicintsubtractProductAndSum(int n) { intm=1, s = 0; while (n != 0) { intx= n % 10; n /= 10; m *= x; s += x; } return m - s; } }
[sol1-C#]
1 2 3 4 5 6 7 8 9 10 11 12
publicclassSolution { publicintSubtractProductAndSum(int n) { int m = 1, s = 0; while (n != 0) { int x = n % 10; n /= 10; m *= x; s += x; } return m - s; } }
[sol1-Python]
1 2 3 4 5 6 7 8
classSolution: defsubtractProductAndSum(self, n: int) -> int: m, s = 1, 0 while n != 0: x, n = n % 10, n // 10 m *= x s += x return m - s
[sol1-Go]
1 2 3 4 5 6 7 8 9 10 11
funcsubtractProductAndSum(n int)int { m := 1 s := 0 for n > 0 { x := n % 10 n /= 10 m *= x s += x } return m - s }
[sol1-JavaScript]
1 2 3 4 5 6 7 8 9 10
var subtractProductAndSum = function(n) { let m = 1, s = 0; while (n > 0) { let x = n % 10; n = Math.floor(n / 10); m *= x; s += x; } return m - s; }
[sol1-C]
1 2 3 4 5 6 7 8 9 10
intsubtractProductAndSum(int n) { int m = 1, s = 0; while (n) { int x = n % 10; n /= 10; m *= x; s += x; } return m - s; }