บทนำ
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
ขั้นตอนการแก้ปัญหา
- รับตัวเลขเป็นสตริง (รองรับเลขใหญ่มาก)
- คำนวณผลรวมหลักทั้งหมด
- ใช้สูตร 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)