কম্পিউটার

C++ এ n পদ পর্যন্ত 1+22+333+4444+... সিরিজের যোগফল খুঁজুন


এই সমস্যায়, আমাদের একটি পূর্ণসংখ্যার মান দেওয়া হয়েছে। আমাদের কাজ হল সিরিজ 1 + 22 + 333 + 4444 + 55555... n পদ পর্যন্ত যোগফল খুঁজে বের করা .

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

Input : N = 4
Output : 4800

ব্যাখ্যা

1 + 22 + 333 + 4444 = 4800

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

সমস্যা সমাধানের একটি সহজ পদ্ধতি হল সিরিজের সাধারণ পদ খুঁজে বের করা এবং তারপর n পদ পর্যন্ত যোগফল খুঁজে বের করা। এবং সূত্র ব্যবহার করে যোগফল গণনা করলে O(1) সময় কমে যাবে।

সিরিজটি হল,

1 + 22 + 333 + 4444 + 55555...

সিরিজের যোগফল এইভাবে পুনরায় লেখা যেতে পারে,

$\mathrm{Sum}\:=\:1^*(\frac{10^1-1}{9})\:+\:2^*(\frac{10^1-1}{9}) \:+\:3^*(\frac{10^1-1}{9})\dotsm$

সাধারণ 1/9 নিলে যোগফল হয়ে যায়,

$\mathrm{Sum}\:=\:1/9^*\lbrace(1^*10^1-1)\:+\:(2^*10^2-1)\:+\:(3 ^*10^3-1)\:+\:\dotsm(n^*10^1-n)\rbrace$

$\mathrm{Sum}\:=\:1/9^{*}\lbrace1^*10^1\:+\:2^*10^2\:+\:3^*10^3\:+ \:\dotsm+n^*10^n\:-\:(1+2+3+\dotsm\:n)\rbrace$

$\mathrm{Sum}\:=\:1/9^{*}\lbrace(1^*10^1\:+\:2^*10^2\:+\:3^*10^3\ :+\:\dotsm+n^*10^n)\:-\:1/2(n^*(n+1))\rbrace$

শব্দটি (1*10 1 + 2*10 2 + 3*10 3 + ... + n * 10 n ) সিরিজের সাধারণ সূত্রে পার্থক্য করে সমাধান করা যেতে পারে,

1 + x + x 2 + x 3 + ... n * x n

সুতরাং, শর্তাবলী (1 * 10 1 + 2 * 10 2 + 3 * 10 3 + ... + n * 10 n ) হিসাবে পুনরায় লেখা যেতে পারে,

$\frac{n^*(10^{n+2})-(n+1)*(10^{n+1})+10}{81}$

যোগফলের সূত্রে ফিরিয়ে দেওয়া,

$\mathrm{Sum}\:=\:1/9^*\lbrace(\frac{n^*(10^{n+2})-(n+1)*(10^{n+1}) +10)}{81}\:-\:1/2(n^*(n+1))\rbrace$

$\mathrm{Sum}\:=\:\frac{1}{1458}*\lbrace2^*(n*(10^{n+2})-(n+1)*(10^{n+1 })+10)-81^*n^*(n+1)\rbrace$

$\mathrm{Sum}\:=\:\frac{1}{1458}*\lbrace2^*(n*(10^{n+2})-(n+1)*(10^{n+1 })+10)-81^*n^*(n+1)\rbrace$

$\mathrm{Sum}\:=\:\frac{1}{1458}*\lbrace(n^*(2^*10^{n+1}-2^*10^{n+1})- 2^*10^{n+1})\:+\:20\:-\:81^*n^2-81n\rbrace$

$\mathrm{Sum}\:=\:\frac{1}{1458}*\lbrace10^{n+1*}(20n-2n-2)-81n^2-81n+20\rbrace$

$\mathrm{Sum}\:=\:\frac{1}{1458}*\lbrace10^{n+1*}(18n-2)-81n^2-81n+20\rbrace$

উদাহরণ

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

#include<iostream>
#include<math.h>
using namespace std;
int calcSumNTerms(int n) {
   return ( ( (18*n - 2)*(pow(10, n+1)) - 81*n*n - 81*n + 20 )/1458 );
}
int main() {
   int n = 5;
   cout<<"The sum of series upto n terms is "<<calcSumNTerms(n);
   return 0;
}

আউটপুট

The sum of series upto n terms is 60355

  1. C++ এ লুকানো নম্বর খুঁজে বের করার জন্য প্রোগ্রাম

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

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

  4. 23+ 45+ 75+ ….. N পদ পর্যন্ত সিরিজের যোগফল খুঁজে পেতে C++ প্রোগ্রাম