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

C++ একটি সংখ্যাকে ন্যূনতম সম্ভব সিউডো-বাইনারি সংখ্যাগুলোর যোগফল হিসেবে প্রকাশ করুন


এই টিউটোরিয়ালে, আমরা একটি সংখ্যাকে ন্যূনতম সিউডো-বাইনারি (pseudo-binary) সংখ্যাগুলোর যোগফল হিসেবে প্রকাশ করার কথা আলোচনা করব। সিউডো-বাইনারি সংখ্যা হলো যেসব সংখ্যা শুধু বাইনারি ডিজিট (০ এবং ১) দিয়ে গঠিত। সিউডো-বাইনারি সংখ্যার উদাহরণ: 00, 11, 10, 100, 111, 1011, ইত্যাদি।

নিচে কিছু উদাহরণ দেওয়া হলো সংখ্যাগুলোকে সিউডো-বাইনারি সংখ্যাগুলোর যোগফল হিসেবে প্রকাশ করা।

Input : 23 Output : 11 + 11 + 1 Explanation : 23 = 11 + 11 + 1, সিউডো-বাইনারি সংখ্যা (11, 11, 1) এর যোগফল 23। Input : 50 Output : 10 + 10 + 10 + 10 + 10

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

নিচে N কে প্রকাশ করার জন্য ন্যূনতম সিউডো-বাইনারি সংখ্যা বের করার একটি সেরা পদ্ধতি দেওয়া হলো।

  • একটি সংখ্যা X নিন এবং এর ডিজিটগুলো N-এর ডিজিট অনুযায়ী ১ বা ০ আপডেট করুন।

  • N-এর প্রতিটি প্লেসের ডিজিট চেক করুন,

    • যদি ০ হয়, তবে X-এর সেই প্লেসকে ০ আপডেট করুন।

    • যদি ০ না হয়, তবে X-এর সেই প্লেসকে ১ আপডেট করুন।

    • ধরুন N = 32, তবে X হবে 11।

  • তবে X হবে একটি সিউডো-বাইনারি সংখ্যা।

  • এখন N কে X দিয়ে ডিক্রিমেন্ট করুন এবং ধাপ ১ পুনরাবৃত্তি করুন যতক্ষণ N শূন্য হয় না।

উদাহরণ

উপরোক্ত পদ্ধতির জন্য C++ কোড

 #include<iostream> using namespace std; int main(){    int N = 51;    // N ০ হয় না পর্যন্ত একটি সিউডো-বাইনারি সংখ্যা খুঁজে বের করুন।    cout << "pseudo-binary representation of " << N << " is: ";    while (N > 0){                       // N অনুযায়ী ০ এবং ১ ধারণকারী X খুঁজে বের করুন।       int temp = N;       int X = 0, bit = 1;       // N-এর প্রতিটি প্লেস চেক করুন শূন্য বা নন-শূন্য।       while (temp!=0){       int last_dig = temp % 10;       temp = temp / 10;       if (last_dig != 0)          X += bit;          bit *= 10;       }       // একটি সিউডো-বাইনারি সংখ্যা প্রিন্ট করুন।       cout << X << " ";       // X দিয়ে বিয়োগ করে N আপডেট করুন।       N = N - X;            }    return 0; }

আউটপুট

pseudo-binary representation of 51 is: 11 10 10 10 10

কোড বুঝা

  • বহির্দের while লুপ N নেওয়ার জন্য এবং প্রতিটি প্লেসের ডিজিট পিক করে X বের করার জন্য।

  • আমরা temp ভেরিয়েবলকে N দিয়ে আপডেট করি এবং অভ্যন্তরীণ লুপ temp-এর প্রতিটি প্লেস চেক করে এবং সেই প্লেসের X ভেরিয়েবল আপডেট করে।

  • X-এর মান প্রিন্ট করুন কারণ সেটি একটি সিউডো-বাইনারি সংখ্যা।

  • আমরা N কে X দিয়ে বিয়োগ করে আপডেট করি এবং বহির্দের লুপে আবার যাই যতক্ষণ N ০ হয়।

উপসংহার

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


  1. সি++-এ ডাডেনি নম্বর

  2. ফিবোনাচ্চি সংখ্যাগুলোর বর্গের যোগফল C++-এ

  3. C++ প্রোগ্রাম: সংখ্যা ২টি ট্রায়্যাঙ্গুলার নাম্বারের যোগফল কিনা চেক

  4. C++ প্রোগ্রাম: সংখ্যা কনsekutিভ নাম্বারগুলোর যোগফল কিনা চেক