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

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


ট্রায়্যাঙ্গুলার নাম্বার = Tₙ = n(n+1)/2 (১, ৩, ৬, ১০, ১৫, ...)।
সংখ্যা N কি দুটি ট্রায়্যাঙ্গুলার নাম্বারের যোগফল?

অ্যালগরিদম

  1. N-র চোয় ছোট সব ট্রায়্যাঙ্গুলার নাম্বার সেটে রাখুন।
  2. প্রতিটি x সেটে, N-x সেটে আছে কিনা চেক করুন।

C++ কোড উদাহরণ

#include <iostream>
#include <set>
using namespace std;

bool isSumOfTwoTriangular(int n) {
    set<int> s;
    for (int i=1; ; i++) {
        int t = i*(i+1)/2;
        if (t >= n) break;
        s.insert(t);
    }
    for (int x : s)
        if (s.count(n-x)) return true;
    return false;
}

int main() {
    int n = 16;
    cout << (isSumOfTwoTriangular(n) ? "Can be represented" : "Cannot be represented");
    return 0;
}

আউটপুট

Can be represented
  1. C++ প্রোগ্রাম: সংখ্যা a^b আকারে এক্সপ্রেস করা যায় কিনা চেক

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

  3. C++ প্রোগ্রাম: সংখ্যা 2ˣ + 2ʸ আকারে এক্সপ্রেস করা যায় কিনা চেক

  4. C++-এ একটি সংখ্যা দুটি প্রাইমের যোগফল হিসেবে এক্সপ্রেস করা যায় কিনা চেক করা