কম্পিউটার টিউটোরিয়াল

C প্রোগ্রাম: প্রডাক্ট অ্যারে পাজল (ডিভিশন বাদে প্রতিটি এলিমেন্ট বাদে গুণফল)

সংক্ষিপ্ত বিবরণ

একটি অ্যারে দেওয়া থাকলে, প্রতিটি ইন্ডেক্সের জন্য বাকি সব এলিমেন্টের গুণফল বের করতে হবে — ডিভিশন অপারেটর ছাড়া।

অ্যালগরিদম (O(n) টাইম, O(n) স্পেস)

  1. লেফট প্রডাক্ট অ্যারে: left[i] = arr[0]×...×arr[i-1]
  2. রাইট প্রডাক্ট অ্যারে: right[i] = arr[i+1]×...×arr[n-1]
  3. ফলাফল: prod[i] = left[i] × right[i]

উদাহরণ

Input:  {10, 3, 5, 6, 2}
Output: {180, 600, 360, 300, 900}

সি কোড

#include <stdio.h>
#include <stdlib.h>

void productArray(int arr[], int n) {
    int *left = malloc(n * sizeof(int));
    int *right = malloc(n * sizeof(int));
    int *prod = malloc(n * sizeof(int));

    left[0] = 1;
    for (int i = 1; i < n; i++) left[i] = arr[i-1] * left[i-1];

    right[n-1] = 1;
    for (int i = n-2; i >= 0; i--) right[i] = arr[i+1] * right[i+1];

    for (int i = 0; i < n; i++) prod[i] = left[i] * right[i];

    for (int i = 0; i < n; i++) printf("%d ", prod[i]);
    printf("\n");

    free(left); free(right); free(prod);
}

int main() {
    int arr[] = {10, 3, 5, 6, 2};
    int n = sizeof(arr)/sizeof(arr[0]);
    productArray(arr, n);
    return 0;
}

আউটপুট

180 600 360 300 900
  1. C প্রোগ্রাম: অ্যারে-এর উপাদানগুলোর গুণফল (Product) বের করা

  2. C প্রোগ্রাম: অ্যারে রেঞ্জের গুণফল মডুলো P-এ

  3. C++-এ অ্যারেতে ট্রিপলেট (সাবসিকোয়েন্স আকার ৩) এর সর্বোচ্চ গুণফল বের করার প্রোগ্রাম

  4. C++-তে অ্যারেতে থাকা সব প্রাইম নম্বরের গুণফল বের করা