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

C++-এ কিউব পেয়ার খুঁজে বের করা - (A n^(2/3) সমাধান)

একটি সংখ্যা দেওয়া আছে। আমাদের দুটি পেয়ার খুঁজে বের করতে হবে, যারা 그 সংখ্যক দুটি কিউবের সমষ্টি হিসেবে প্রকাশ করতে পারে। অর্থাৎ, আমাদের দুটি পেয়ার (a, b) এবং (c, d) খুঁজে বের করতে হবে যাতে দেওয়া সংখ্যা n কে n = a³ + b³ = c³ + d³ হিসেবে প্রকাশ করা যায়।

আইডিয়াটি সহজ। এখানে প্রতিটি সংখ্যা a, b, c এবং d সবই n^(1/3) ছোট। n^(1/3) ছোট সংখ্যা গুলো দিয়ে তৈরি প্রতিটি ভিন্ন পেয়ার (x, y) এর জন্য, যদি তাদের সমষ্টি (x³ + y³) দেওয়া সংখ্যার সমান হয়, তবে সেগুলো হ্যাশ টেবিলে সমষ্টি মান কী হিসেবে স্টোর করব। তারপর যদি একই সমষ্টি আবার আসে, তবে সাধারনভাবেই প্রতিটি পেয়ার প্রিন্ট করব।

অ্যালগরিদম

getPairs(n): 
শুরু 
    cube_root := n-এর কিউব রুট
    map হিসেবে int টাইপ কী এবং পেয়ার টাইপ ভ্যালু
    i = 1 থেকে cube_root পর্যন্ত, করো
        j = i + 1 থেকে cube_root পর্যন্ত, করো
            sum = i³ + j³
            যদি sum n-এর সমান না হয়, তবে পরবর্তী অংশ বাদ দিয়ে দ্বিতীয় ইটারেশনে যাও
            যদি sum map-এ উপস্থিত থাকে, তবে পেয়ার এবং (i, j) প্রিন্ট করো
            অন্যথায় (i,j) সংশ্লিষ্ট sum-সাথে map-এ ইনসার্ট করো
        শেষ
    শেষ
শেষ

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

#include <iostream>
#include <cmath>
#include <map>
using namespace std;

int getPairs(int n) {
    int cube_root = pow(n, 1.0/3.0);
    map<int, pair<int, int> > my_map;
    for(int i = 1; i < cube_root; i++) {
        for(int j = i + 1; j <= cube_root; j++) {
            int sum = i*i*i + j*j*j;
            if(sum != n)
                continue;
            if(my_map.find(sum) != my_map.end()) {
                cout << "(" << my_map[sum].first << ", " << my_map[sum].second << ") and (" << i << ", " << j << ")" << endl;
            } else {
                my_map[sum] = make_pair(i, j);
            }
        }
    }
}

int main() {
    int n = 13832;
    getPairs(n);
}

আউটপুট

(2, 24) and (18, 20)
  1. C++-এ অ্যারে-এ প্রাইম পেয়ার সংখ্যা বের করুন

  2. সি++-এ একটি সংখ্যার পলাইটনেস (Politeness) বের করা

  3. সি++-এ ত্রিভুজের পেরিমিটার (Perimeter) বের করা

  4. পাইথন প্রোগ্রাম: সিরিজ 1/1! + 2/2! + 3/3! + ... + n/n! এর যোগফল বের করা