এই সমস্যায়, আমাদেরকে একটি সংখ্যা n দেওয়া হয়েছে যা 2^0, 2^1, 2^2, …, 2^n সিরিজের n-ম পদটিকে সংজ্ঞায়িত করে। আমাদের কাজ হল 2^0 + 2^1 + 2^2 +... 2^n সিরিজের যোগফল খুঁজে বের করার জন্য একটি প্রোগ্রাম তৈরি করা।
সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,
ইনপুট
n=6
আউটপুট
ব্যাখ্যা
<প্রি>সমষ্টি =2^0 + 2^1 + 2^2 + 2^3 + 2^4 + 2^5 + 2^6 যোগফল =1 + 2 + 4 + 8 + 16 + 32 + 64 =127সমস্যার একটি সহজ সমাধান লুপ ব্যবহার করে। 0 থেকে n পর্যন্ত প্রতিটি মানের জন্য 2^i খুঁজে বের করুন এবং যোগফল পরিবর্তনশীলে যোগ করুন।
অ্যালগরিদম
যোগফল =0 ধাপ 1 শুরু করুন:i =0 থেকে n পর্যন্ত পুনরাবৃত্তি করুন। এবং অনুসরণ করুন:ধাপ 1.1:যোগফল আপডেট করুন, যোগফল +=2^i. ধাপ 2:প্রিন্ট যোগফল।
উদাহরণ
আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম,
#include#include নেমস্পেস ব্যবহার করে std;int calcSeriesSum(int n) { int sum =0; জন্য (int i =0; i <=n; i++) যোগফল +=pow(2, i); ফেরত যোগফল;}int main() { int n =11; cout<<"সিরিজের যোগফল 2^0 + 2^1 + 2^2 +... 2^"< আউটপুট
সিরিজের যোগফল 2^0 + 2^1 + 2^2 +... 2^11 হল 4095এই সমস্যাটি সমাধান করার জন্য এটি সবচেয়ে কার্যকর পদ্ধতি নয় কারণ এটি একটি লুপ ব্যবহার করে যা O(n) এর সময়কে জটিল করে তোলে।
আরও কার্যকর সমাধান, আমরা যোগফলের জন্য গাণিতিক সূত্র ব্যবহার করব। এটি
দ্বারা প্রদত্ত2^(n+1) - 1উদাহরণ
আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম,
#include#include নেমস্পেস ব্যবহার করে std;int calcSeriesSum(int n) { return ( (pow(2, (n+1)) - 1) );}int main() { int n =11; cout<<"সিরিজের যোগফল 2^0 + 2^1 + 2^2 +... 2^"< আউটপুট
সিরিজের যোগফল 2^0 + 2^1 + 2^2 +... 2^11 হল 4095