কম্পিউটার

C++ এ 1 + 2 + 2 + 3 + 3 + 3 + .. + n সিরিজের যোগফল খুঁজে বের করার জন্য প্রোগ্রাম


এই সমস্যায়, আমাদের একটি সংখ্যা n দেওয়া হয়েছে যা সিরিজের সেই nতম পদটিকে নির্দেশ করে। আমাদের কাজ হল একটি সি++ এ 1 + 2 + 2 + 3 +3 + 3 + .. + n সিরিজের যোগফল খুঁজে বের করার জন্য একটি প্রোগ্রাম তৈরি করা। .

সমস্যা বর্ণনা − এখানে, আমরা সিরিজের যোগফল খুঁজে পাব যার nতম পদ n সংখ্যার যোগফলের n গুণ। এর মানে এটি বর্গ সংখ্যার একটি সিরিজ।

সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক

ইনপুট

n = 4

আউটপুট

30

ব্যাখ্যা

চতুর্থ মেয়াদ পর্যন্ত সিরিজের যোগফল =1 + 2 + 2 + 3 + 3 + 4 + 4 + 4 + 4 =30

সমাধান পদ্ধতি

সমস্যাটির সবচেয়ে কার্যকর সমাধান হবে সিরিজের যোগফলের জন্য সাধারণ সূত্র ব্যবহার করা।

তবে আসুন আমরা এই সমস্যার সম্ভাব্য সমাধান নিয়ে আলোচনা করি যা কেউ ভাবতে পারে।

সরলতম সমাধান সমস্যাটি সরাসরি n পর্যন্ত সিরিজের সংখ্যা যোগ করে। এর জন্য দুটি নেস্টেড লুপের প্রয়োজন হবে, একটি টার্ম এবং প্রতিটি টার্মের মানের জন্য ভিতরেরটি।

অ্যালগরিদম

শুরু করুন − sumVar =0;

  • ধাপ 1 − i -> 1 থেকে n.
      এর জন্য লুপ
    • ধাপ ১.১ − j -> 1 থেকে i.
        এর জন্য লুপ
      • ধাপ ১.১.১ - sumVar, sumVar+=i;
      • আপডেট করুন
  • ধাপ 2 − প্রিন্ট sumVar.

আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম

উদাহরণ

#include <iostream>
using namespace std;
int calcSeriesSum(int n){
   int sumVar = 0;
   for(int i = 1; i <= n; i++){
      for(int j = 1; j <= i; j++){
         sumVar += i;
      }
   }
   return sumVar;
}
int main(){
   int n = 7;
   cout<<"The sum of series till "<<n<<" is "<<calcSeriesSum(n);
   return 0;
}

আউটপুট

The sum of series till 7 is 140

এই সমাধানটি সহজ কিন্তু কার্যকর নয় কারণ এটিতে দুটি নেস্টেড লুপ রয়েছে যা এটির অর্ডারের সময় জটিলতা তৈরি করে O(n2) .

একটি কার্যকর সমাধান এই সত্যের উপর ভিত্তি করে যে যদি একটি সংখ্যা(n) নিজের সাথে n বার যোগ করা হয়। তারপর, সংখ্যাটিকে নিজের সাথে গুণ করে ফলাফল অর্জন করা যেতে পারে।

যেমন 5+5+5+5+5 =5*5।

সুতরাং, আমরা সমস্যা সমাধানের জন্য একটি লুপের পরিবর্তে গুণ ব্যবহার করতে পারি।

অ্যালগরিদম

শুরু করুন − sumVal =0;

  • ধাপ 1 i -> 0 থেকে n.
      এর জন্য লুপ
    • ধাপ 2 − আপডেট sumVal, sumVal +=(i*i)

আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম

উদাহরণ

#include <iostream>
using namespace std;
int calcSeriesSum(int n){
   int sumVar = 0;
   for(int i = 1; i <= n; i++){
      sumVar += (i*i);
   }
   return sumVar;
}
int main(){
   int n = 7;
   cout<<"The sum of series till "<<n<<" is "<<calcSeriesSum(n);
   return 0;
}

আউটপুট

The sum of series till 7 is 140

সমাধানটি আরও ভাল কারণ এটি শুধুমাত্র একটি লুপ নেয় এবং অর্ডার O(n) এর একটি সময় জটিলতা রয়েছে। তবে এটি সর্বোত্তম সম্ভাব্য সমাধান নয় কারণ একই O(1) সময়ের জটিলতায় করা যেতে পারে।

সবচেয়ে কার্যকর সমাধান প্রদত্ত সিরিজের যোগফলের জন্য একটি সাধারণ সূত্র ব্যবহার করছে।

সিরিজের যোগফল =

1 + 2 + 2 + 3 + 3 + 3 + …. এন.

এটি হিসাবে তৈরি করা যেতে পারে

1 + (2+2) + (3+3+3) + … + (N+N+N..N)
1*1 + 2*2 + 3*3 + … N*N.
12 + 22 + 32 + … N2.

$Sum =\sum_{\square=1}^\square\blacksquare\square^2$

বর্গক্ষেত্রের যোগফলের সূত্র হল n*(n+1)*(2n+1)/6। এবং আমরা এই সূত্রটি ব্যবহার করেও যোগফল বের করতে পারি।

আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম

উদাহরণ

#include <iostream>
using namespace std;
int calcSeriesSum(int n){
   int sumVar = 0;
   sumVar = ((n*(n + 1)*( 2 * n + 1))/6 );
      return sumVar;
}
int main(){
   int n = 7;
   cout<<"The sum of series till "<<n<<" is "<<calcSeriesSum(n);
   return 0;
}

আউটপুট

The sum of series till 7 is 140

  1. সি++-এ 0, 0, 2, 1, 4, 2, 6, 3, 8… সিরিজের N-তম পদ খুঁজে বের করার প্রোগ্রাম

  2. C++-এ a, b, b, c, c, c… সিরিজের N-তম পদ খুঁজে বের করার প্রোগ্রাম

  3. C++ এ সিরিজ 1, 2, 11, 12, 21… এর N-তম পদ খুঁজে বের করার প্রোগ্রাম

  4. পাটিগণিত সিরিজের যোগফলের জন্য C++ প্রোগ্রাম