คำนวณผลคูณของสมาชิกในอาร์เรย์ตั้งแต่ตำแหน่ง 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
แนวทาง
- ปรับ index L,R ให้เป็น 0-based (ลบ 1)
- ลูปคูณสะสมและทำ 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