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

C++ ব্যবহার করে যোগফল n করার জন্য ক্ষমতার পদের ন্যূনতম সংখ্যা বের করা

সমস্যা বিবরণ

দুটি ধনাত্মক পূর্ণসংখ্যা N এবং X দেওয়া আছে। কাজ হল N কে X-এর ক্ষমতার যোগফল হিসেবে প্রকাশ করা (X⁰ + X¹ + ... + Xⁿ) যাতে X-এর ক্ষমতার পদের সংখ্যা ন্যূনতম হয়।

N কে তৈরি করতে ব্যবহৃত X-এর ক্ষমতার ন্যূনতম সংখ্যা প্রিন্ট করতে হবে।

যদি N = 15 এবং X = 3 হয়, তবে 3টি '3'-এর ক্ষমতা দরকার হবে:

15 = (3² + 3¹ + 3¹)

এলগরিদম

ফলাফল গণনা করতে নিচের ফর্মুলা ব্যবহার করুন:

1. যদি x = 1 হয়, তবে উত্তর হবে শুধু n (n = 1 + 1 + ... n বার)
2. যেকোনো সংখ্যা n কে আপনি এভাবে প্রকাশ করতে পারেন: n = x * a + b যেখানে 0 ≤ b ≤ x-1। এখন যেহেতু b হল 0 থেকে x-1 এর মধ্যস্থ, তাই b কে x⁰-এর যোগফল হিসেবে b বার প্রকাশ করতে হবে।

উদাহরণ কোড

#include <iostream>
using namespace std;

int minNumOfPower(int n, int x) {
    if (x == 1) {
        return n;
    }
    int result = 0;
    while (n > 0) {
        result = result + (n % x);
        n = n / x;
    }
    return result;
}

int main() {
    int n = 15;
    int x = 3;
    cout << "Minimum number of powers = " << minNumOfPower(15, 3) << endl;
    return 0;
}

আউটপুট

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

Minimum number of powers = 3
  1. C++ ব্যবহার করে বাইনারি স্ট্রিং S তৈরি করতে ন্যূনতম অপারেশন সংখ্যা

  2. C++ ব্যবহার করে দেওয়া উচ্চতার AVL ট্রির ন্যূনতম নোড সংখ্যা

  3. C++ ব্যবহার করে অ্যারের সব এলিমেন্ট সমান করতে ন্যূনতম মুভ সংখ্যা

  4. C++ ব্যবহার করে একটি সংখ্যার ফ্যাক্টরের ন্যূনতম যোগফল বের করা