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

หาผลรวมหลักของจำนวนจนเหลือ 1 หลัก (Digital Root) ใน C++


บทนำ

ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมหา Digital Root คือผลรวมของหลักของจำนวน ทำซ้ำจนได้เลข 1 หลัก (0-9)

ตัวอย่าง

Input: 4543
Output: 7
(4+5+4+3=16 → 1+6=7)

วิธีที่ 1: วนลูปคำนวณโดยตรง

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

void findTheSingleDigit(int n) {
    int sum = 0;
    while(n > 0 || sum > 9) {
        if(n == 0) {
            n = sum;
            sum = 0;
        }
        sum += n % 10;
        n /= 10;
    }
    cout << sum << endl;
}

int main() {
    int n = 4543;
    findTheSingleDigit(n);
    return 0;
}

วิธีที่ 2: สูตรคณิตศาสตร์ (O(1))

Digital Root มีสูตรง่ายๆ:

  • ถ้า n = 0 → ผลลัพธ์ = 0
  • ถ้า n หาร 9 ลงตัว → ผลลัพธ์ = 9
  • อื่นๆ → ผลลัพธ์ = n % 9
#include <bits/stdc++.h>
using namespace std;

void findTheSingleDigit(int n) {
    if (n == 0) {
        cout << 0;
    } else if (n % 9 == 0) {
        cout << 9 << endl;
    } else {
        cout << n % 9 << endl;
    }
}

int main() {
    int n = 4543;
    findTheSingleDigit(n);  // 4543 % 9 = 7
    return 0;
}

ผลลัพธ์

7

สรุป

วิธีที่ 2 ใช้สูตรคณิตศาสตร์ (Digital Root formula) เร็วที่สุด O(1) เหมาะสำหรับทุกขนาดของจำนวน หากมีคำถาม สามารถถามได้ในส่วนความคิดเห็นครับ