Cho số nguyên n, tính hiệu giữa tích các chữ số và tổng các chữ số.
Ví dụ
n = 5362: Tổng = 5+3+6+2 = 16, Tích = 5×3×6×2 = 180. Hiệu = 180 - 16 = 164.
Thuật toán
- Khởi tạo
sum = 0,prod = 1 - Lặp: lấy chữ số cuối
n % 10, cộng vào sum, nhân vào prod,n /= 10 - Trả về
prod - sum
Chương trình mẫu
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
int subtractProductAndSum(int n) {
int prod = 1, sum = 0;
for (int t = n; t; t /= 10) {
int digit = t % 10;
sum += digit;
prod *= digit;
}
return prod - sum;
}
};
int main() {
Solution ob;
cout << ob.subtractProductAndSum(5362);
return 0;
}
Kết quả
164
Lưu ý: Với n = 0, vòng lặp không chạy, prod = 1, sum = 0 → kết quả 1. Có thể xử lý riêng n=0 trả về 0 nếu cần.
Độ phức tạp: O(log₁₀ n) thời gian (số chữ số), O(1) không gian.