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

সি++-এ অ্যারে ইনডেক্স L থেকে R পর্যন্ত যোগফল (arr[i] = i*(-1)^i)


একটি অ্যারে `arr` আছে যেখানে `arr[i] = i * (-1)^i`। দেওয়া ইনডেক্স L থেকে R পর্যন্ত উপাদানগুলোর যোগফল বের করতে হবে।

ইনপুট

L = 2, R = 6

আউটপুট

4

ব্যাখ্যা — arr = {-1, 2, -3, 4, -5, 6}। L=2 থেকে R=6: 2 + (-3) + 4 + (-5) + 6 = 4।

সিম্পল পদ্ধতি (O(N))

int CalcArrSumLtoR(int L, int R){
    int sum = 0;
    for(int i=L; i<=R; i++) sum += i * pow(-1, i);
    return sum;
}

অপ্টিমাইজড পদ্ধতি (O(1)) — গাণিতিক সূত্র

  • জোড় সংখ্যার যোগফল (১ থেকে n): `n/2 * (n/2 + 1)`
  • বিজোড় সংখ্যার যোগফল (১ থেকে n): `((n+1)/2)^2`
  • ফাইনাল সম = (R পর্যন্ত জোড় যোগফল - L-1 পর্যন্ত জোড় যোগফল) - (R পর্যন্ত বিজোড় যোগফল - L-1 পর্যন্ত বিজোড় যোগফল)

উদাহরণ কোড (অপ্টিমাইজড)

#include <iostream> 
using namespace std; 

long findSum(int n, bool isEven){
    long total = isEven ? n/2 : (n+1)/2;
    return isEven ? total*(total+1) : total*total;
}

int CalcArrSumLtoR(int L, int R){
    return (findSum(R, true) - findSum(L-1, true)) - (findSum(R, false) - findSum(L-1, false));
}

int main(){
    int L = 3, R = 15;
    cout << "Sum from " << L << " to " << R << " = " << CalcArrSumLtoR(L, R);
    return 0;
}

আউটপুট

Sum of elements of array from index 3 to 15 is -9

  1. C++-এ XOR ব্যবহার করে অ্যারে তৈরি (সামান্য ইন্ডেক্স বাদ দিয়ে)

  2. C++-এ STL ব্যবহার করে অ্যারে এলিমেন্টগুলোর যোগফল (Sum) বের করা

  3. C++ ব্যবহার করে এনক্রিপ্টেড অ্যারে থেকে আসল অ্যারে বের করা

  4. C++-এ অ্যারের সব উপাদানে XOR অপারেশন প্রয়োগ করে অ্যারে যোগফল ন্যূনীকরণ