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

หาหลักแรกของผลคูณอาร์เรย์ใน C++


บทนำ

ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีหา หลักแรก (first digit) ของผลคูณของทุกสมาชิกในอาร์เรย์ โดยใช้ภาษา C++

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

  1. กำหนดอาร์เรย์ตัวเลข
  2. คำนวณผลคูณของทุกสมาชิกในอาร์เรย์
  3. หารผลลัพธ์ด้วย 10 ซ้ำๆ จนเหลือหลักเดียว (น้อยกว่า 10)
  4. พิมพ์หลักที่เหลือ

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

#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 หากมีคำถาม สามารถถามได้ในส่วนความคิดเห็นครับ