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

โปรแกรม C คำนวณผลคูณช่วงในอาร์เรย์แบบ Modulo

คำนวณผลคูณของสมาชิกในอาร์เรย์ตั้งแต่ตำแหน่ง L ถึง R (1-based index) แล้วทำ modulo ด้วยจำนวนเฉพาะ P

ตัวอย่าง

A[] = {1,2,3,4,5,6}, P=29, L=2, R=6 → Output: 24
A[] = {1,2,3,4,5,6}, P=113, L=2, R=5 → Output: 7

แนวทาง

  1. ปรับ index L,R ให้เป็น 0-based (ลบ 1)
  2. ลูปคูณสะสมและทำ modulo P ทุกขั้นตอนเพื่อป้องกัน overflow

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

#include <stdio.h>

int calculateProduct(int A[], int L, int R, int P) {
    L--; R--; // adjust to 0-based
    int ans = 1;
    for (int i = L; i <= R; i++) {
        ans = (ans * A[i]) % P;
    }
    return ans;
}

int main() {
    int A[] = {1,2,3,4,5,6};
    int P = 29, L = 2, R = 6;
    printf("%d\n", calculateProduct(A, L, R, P));
    return 0;
}

ผลลัพธ์

24