Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Hiệu tích và tổng chữ số của số nguyên C++

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

  1. Khởi tạo sum = 0, prod = 1
  2. Lặp: lấy chữ số cuối n % 10, cộng vào sum, nhân vào prod, n /= 10
  3. 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.