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

Digital Root (รากดิจิตอล) ของจำนวนเต็มใหญ่ใน C++

บทนำ

Digital Root คือผลรวมหลักของตัวเลข ทำซ้ำจนเหลือหลักเดียว (1-9) เช่น 12345 → 1+2+3+4+5=15 → 1+5=6

สูตรทางคณิตศาสตร์

Digital Root ของ n = 0 ถ้า n = 0 9 ถ้า n mod 9 = 0 (และ n ≠ 0) n mod 9 ถ้า n mod 9 ≠ 0

ขั้นตอนการแก้ปัญหา

  1. รับตัวเลขเป็นสตริง (รองรับเลขใหญ่มาก)
  2. คำนวณผลรวมหลักทั้งหมด
  3. ใช้สูตร modulo 9 หา Digital Root ทันที (ไม่ต้องวนลูปซ้ำ)

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

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

int digitalRoot(string n) {
    int digitsSum = 0;
    for (int i = 0; i < n.length(); i++) {
        digitsSum += n[i] - '0';
    }
    if (digitsSum == 0) {
        return 0;
    }
    return digitsSum % 9 == 0 ? 9 : digitsSum % 9;
}

int main() {
    string n = "12345";
    cout << digitalRoot(n) << endl;
    return 0;
}

ผลลัพธ์

6

คำอธิบาย

12345 → ผลรวม = 15 → 15 % 9 = 6 → Digital Root = 6

ข้อดีของสูตรนี้

ไม่ต้องวนลูปคำนวณซ้ำหลายรอบ ใช้เวลา O(ความยาวสตริง) เพียงครั้งเดียว เหมาะสำหรับเลขใหญ่มาก (หลายพันหลัก)

สรุป

Digital Root มีประยุกต์ในการตรวจสอบความถูกต้องของตัวเลข (Checksum) และเลขมนุษย์ (Numerology)