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

N-এর নিচের সব ইন্টিজার যোগফল হিসেবে এক্সপ্রেস করার ন্যূনতম সংখ্যা C++-তে


সমস্যা বিবরণ

একটি ইন্টিজার N দেওয়া আছে। N কে K সংখ্যক ইন্টিজারের যোগফল হিসেবে এক্সপ্রেস করতে হবে যাতে এই ইন্টিজারগুলো থেকে কিছু বা সব যোগ করে ১ থেকে N পর্যন্ত সব সংখ্যা পাওয়া যায়। K-এর ন্যূনতম মান বের করতে হবে।

উদাহরণ

N = 8 হলে চূড়ান্ত উত্তর K = 3।

যদি ১, ২, ৩, ৪ ইন্টিজার নেওয়া হয়, তবে এগুলো যোগ করে ১ থেকে N পর্যন্ত সব সংখ্যা পাওয়া যায়।

e.g. 1 = 1
2 = 2
3 = 3
4 = 4
5 = 1 + 5
6 = 4 + 2
7 = 4 + 3
8 = 1 + 3 + 4

অ্যালগরিদম

দেওয়া ইন্টিজারের বিট সংখ্যা গণনা করুন।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
int getMinNumbers(int n) {
    int cnt = 0;
    while (n) {
        ++cnt;
        n = n >> 1;
    }
    return cnt;
}
int main() {
    int n = 8;
    cout << "Minimum required numbers = " << getMinNumbers(n) << endl;
    return 0;
}

উপরের প্রোগ্রাম কম্পাইল ও এক্সিকিউট করলে নিচের আউটপুট জেনারেট হবে

আউটপুট

Minimum required numbers = 4

  1. অ্যারে থেকে দুটি সংখ্যা বানিয়ে ন্যূনতম যোগফল (C++)

  2. C++-এ অ্যারে সমানভাবে ভাগ করার জন্য মিনিমাম পজিটিভ ইন্টিজার

  3. C++ ব্যবহার করে N কে প্যালিনড্রোম সংখ্যাগুলোর যোগফল হিসেবে প্রকাশের ন্যূনতম প্যালিনড্রোম সংখ্যা

  4. প্রথম nটি প্রাকৃতিক সংখ্যার যোগফলের যোগফল নির্ণয় করা C++-এ