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

C++ ব্যবহার করে ডিজিটের যোগফল জোড় থাকা সংখ্যা বের করুন


একটি পূর্ণসংখ্যা যা ২ দিয়ে সম্পূর্ণরূপে বিভাজ্য, সেটি জোড় সংখ্যা। তাই এই আর্টিকেলে আমাদের একটি সংখ্যা n দেওয়া আছে, এবং আমাদের ডিজিটের যোগফল জোড় থাকা n-তম সংখ্যা বের করতে হবে। ডিজিটের যোগফল জোড় থাকা প্রথম পাঁচটি সংখ্যা হলো 2, 4, 6, 8, এবং 11। উদাহরণস্বরূপ:

Input : n = 5 Output : 11 Explanation : ডিজিটের যোগফল জোড় থাকা প্রথম ৫টি সংখ্যা 2, 4, 6, 8, 11 অর্থাৎ ৫ম সংখ্যা 11। Input : 12 Output : 24

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

এখন আপনি একটি সমস্যা সমাধানের দুটি ভিন্ন প্রক্রিয়া জানবেন।

নেইভ (Naive) পদ্ধতি

n-তম সংখ্যা বের করার একটি সহজ সমাধান হলো প্রথম ১ থেকে শুরু করে সংখ্যাগুলো ট্রাভার্স করা এবং প্রতিটি সংখ্যার জন্য চেক করা যে এর ডিজিটের যোগফল জোড় কিনা। হ্যাঁ হলে কাউন্টার ১ বাড়াতে থাকুন যতক্ষণ কাউন্টারের মান n-এর সমান হয় না এবং চূড়ান্তে সেই n-তম সংখ্যাটিই হবে উত্তর।

দক্ষ পদ্ধতি

n-তম সংখ্যা বের করার একটি দক্ষ পদ্ধতি হলো প্রথম জোড় ডিজিট সম वाली সংখ্যাগুলো চেক করে একটি প্যাটার্ন খুঁজে বের করা। জোড় ডিজিট সম वाली প্রথম ২০টি সংখ্যা হলো 2, 4, 6, 8, 11, 13, 15, 17, 19, 20, 22, 24, 26, 28, 31, 33, 35, 37, 39 এবং 40। এই প্রথম ২০টি সংখ্যা দেখে আমরা পেলাম যে যদি n-এর লাস্ট ডিজিট ০ থেকে ৪-এর মধ্যে থাকে, তবে n-তম সংখ্যা হবে 2*n, এবং যদি n-এর লাস্ট ডিজিট ৫ থেকে ৯-এর মধ্যে থাকে, তবে n-তম সংখ্যা হবে ( 2*n + 1)।

উদাহরণ

#include <bits/stdc++.h> using namespace std; int main () {    long long int n = 13;    long long int result;    // n-এর লাস্ট ডিজিট বের করুন    int last_digit = n % 10;    // চেক করুন লাস্ট ডিজিট ০ এবং ৪-এর মধ্যে আছে কিনা    if (last_digit >= 0 && last_digit <= 4)       result = 2 * n;       // চেক করুন লাস্ট ডিজিট ৫ এবং ৯-এর মধ্যে আছে কিনা    else       result = (2 * n) + 1;    cout << "nth Number with even sum of digits: " << result;    return 0; }

আউটপুট

nth Number with even sum of digits: 26

উপরোক্ত কোডের ব্যাখ্যা

  • লাস্ট ডিজিট বের করুন এবং চেক করুন ০ এবং ৪-এর মধ্যে আছে কিনা; হ্যাঁ হলে result ভেরিয়েবলে 2*n আন্সার হিসেবে সংরক্ষণ করুন।
  • অন্যথায়, চেক করুন লাস্ট ডিজিট ৫ এবং ৯-এর মধ্যে আছে কিনা; হ্যাঁ হলে result ভেরিয়েবলে 2*n + 1 আন্সার হিসেবে সংরক্ষণ করুন।
  • result ভেরিয়েবলে সংরক্ষিত জোড় ডিজিট সমের n-তম সংখ্যা প্রিন্ট করুন।

উপসংহার

এই আর্টিকেলে, আমরা জোড় ডিজিট সমের n-তম সংখ্যা বের করার কথা আলোচনা করেছি, যেখানে আমরা এই সমস্যা দুটিভাবে সমাধান করতে পারি যা আমরা এই আর্টিকেলে বুঝেছি। আমরা একই সমস্যা সমাধানের জন্য একটি C++ কোডও লিখেছি। আমরা এই কোডটি C, Java, Python ইত্যাদি অন্যান্য ভাষায়ও লিখতে পারি। আশা করি আপনি এই আর্টিকেলটিকে উপকারী পাবেন।


  1. C++ ব্যবহার করে পেন্টাগোনাল পিরামিডাল সংখ্যা নির্ণয় করুন

  2. C++ দিয়ে একটি স্ট্রিংয়ের সাবস্ট্রিং-এর সংখ্যা বের করা

  3. C++ ব্যবহার করে একটি সংখ্যার জোড় মুল ফ্যাক্টরের যোগফল বের করা

  4. C#-এ রিকার্শন ব্যবহার করে সংখ্যার ডিজিট সাম বের করা