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

หาตัวเลข x ที่ผลรวมของ x และผลรวมหลักของ x เท่ากับ n ใน C++

ปัญหา

ให้ตัวเลข n ต้องการหาตัวเลข x ที่ทำให้ x + ผลรวมหลักของ x = n

ตัวอย่าง: n = 21 คำตอบคือ x = 15 เพราะ 15 + (1 + 5) = 21

วิธีแก้ปัญหา

ใช้วิธีตรวจสอบทีละตัว (Brute Force) ตั้งแต่ 1 ถึง n:

  1. วนลูป i จาก 1 ถึง n
  2. คำนวณผลรวมหลักของ i
  3. ถ้า i + digitSum(i) == n คืนค่า i
  4. ถ้าไม่พบ คืนค่า -1

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

#include <iostream>
using namespace std;

int getDigitSum(int n) {
    int sum = 0;
    while (n) {
        sum += n % 10;
        n /= 10;
    }
    return sum;
}

int getNumber(int n) {
    for (int i = 0; i <= n; i++)
        if (i + getDigitSum(i) == n)
            return i;
    return -1;
}

int main() {
    int n = 21;
    cout << "The value of x is: " << getNumber(n);
    return 0;
}

ผลลัพธ์

The value of x is: 15