บทนำ
ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีหา หลักแรก (first digit) ของผลคูณของทุกสมาชิกในอาร์เรย์ โดยใช้ภาษา C++
ขั้นตอนการแก้ปัญหา
- กำหนดอาร์เรย์ตัวเลข
- คำนวณผลคูณของทุกสมาชิกในอาร์เรย์
- หารผลลัพธ์ด้วย 10 ซ้ำๆ จนเหลือหลักเดียว (น้อยกว่า 10)
- พิมพ์หลักที่เหลือ
ตัวอย่างโค้ด
#include <bits/stdc++.h>
using namespace std;
int productOfArrayDigits(int arr[], int n) {
int product = 1;
for (int i = 0; i < n; i++) {
product *= arr[i];
}
return product;
}
int firstDigitOfNumber(int n) {
while (n >= 10) {
n /= 10;
}
return n;
}
int main() {
int arr[] = { 1, 2, 3, 4, 5, 6 };
cout << firstDigitOfNumber(productOfArrayDigits(arr, 6)) << endl;
return 0;
}
ผลลัพธ์
7
คำอธิบาย: 1×2×3×4×5×6 = 720 → หลักแรกคือ 7
ข้อควรระวัง
สำหรับอาร์เรย์ขนาดใหญ่หรือตัวเลขใหญ่ ผลคูณอาจล้น (overflow) แม้ใช้ long long แก้ได้โดย:
- ใช้ Logarithm: log10(ผลคูณ) = Σ log10(arr[i]) แล้วนำส่วนทศนิยมมาคำนวณ
- ใช้ Big Integer library
สรุป
วิธีง่ายสำหรับอาร์เรย์เล็ก สำหรับขนาดใหญ่ควรใช้ Logarithm เพื่อป้องกัน overflow หากมีคำถาม สามารถถามได้ในส่วนความคิดเห็นครับ