Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ลบผลคูณและผลรวมของหลักเลขของจำนวนเต็มใน C++

ปัญหา

ได้รับตัวเลข 1 ตัว หาผลรวมหลักเลข และผลคูณหลักเลข แล้วหาผลต่าง (Product - Sum) เช่น 5362: Sum=16, Product=180 → 180-16=164

วิธีแก้

แยกหลักเลขทีละตัว (mod 10, div 10) บวกและคูณสะสม แล้วคืน Product - Sum

ตัวอย่างโค้ด

#include <bits/stdc++.h>
using namespace std;

class Solution {
public:
    int subtractProductAndSum(int n) {
        int prod = 1;
        int sum = 0;
        for (int t = n; t; t /= 10) {
            sum += t % 10;
            prod *= t % 10;
        }
        return prod - sum;
    }
};

int main() {
    Solution ob;
    cout << ob.subtractProductAndSum(5362);
}

อินพุต

5362

เอาต์พุต

164

คำอธิบาย

ลูป while (t) หรือ for (t=n; t; t/=10) แยกหลักเลขจากขวาไปซ้าย t%10 ได้หลักหน่วย t/=10 ตัดหลักหน่วยออก ความซับซ้อน O(log n)