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

C++-এ ১ থেকে n রেঞ্জে বিজোড় সংখ্যা বাদ দিয়ে k-তম স্মলেস্ট বের করুন

দুটি পূর্ণসংখ্যা n এবং k দেওয়া আছে। রেঞ্জ [1, n]-এ থেকে সব বিজোড় সংখ্যা বাদ দিয়ে (অর্থাৎ শুধু জোড় সংখ্যা রেখে) k-তম স্মলেস্ট সংখ্যা বের করতে হবে।

উদাহরণ

ইনপুট: n = 12, k = 4

জোড় সংখ্যাগুলো: 2, 4, 6, 8, 10, 12

৪র্থ স্মলেস্ট: 8 → আউটপুট: 8

গাণিতিক সমাধান (O(1))

জোড় সংখ্যাগুলো হচ্ছে: 2, 4, 6, 8, ... = 2 × 1, 2 × 2, 2 × 3, ...

k-তম জোড় সংখ্যা = 2 × k

শর্ত: 2k ≤ n (অর্থাৎ k ≤ n/2)।

C++ প্রোগ্রাম

#include <bits/stdc++.h>
using namespace std;

int main() {
    int n = 124, k = 12;
    if (n >= 2 * k) {
        cout << "kth smallest number is " << (2 * k);
    } else {
        cout << "kth smallest number cannot be found";
    }
    return 0;
}

আউটপুট

kth smallest number is 24

ব্যাখ্যা

  • n=124, k=12 → 2×12=24 ≤ 124 → মানible।
  • যদি k > n/2 হয়, তবে রেঞ্জে তত জোড় সংখ্যা নেই।
  • টাইম: O(1), কোনো লুপ/অ্যারে লাগে না।

সামান্যীকরণ

যেকোনো আর্থিক সিকোয়েন্স (AP) এর k-তম টার্ম: a + (k-1)d। এখানে a=2, d=2 → 2k।

  1. C++-এ ফিবোনাচ্চি নাম্বার দিয়ে K বানাতে ন্যূনতম সংখ্যা

  2. C++-এ দেওয়া রেঞ্জে বিজোড় সংখ্যক ডিভাইজার থাকা সংখ্যা গণনা করার প্রোগ্রাম

  3. C++-এ নির্দিষ্ট রেঞ্জে সবচেয়ে ছোট ফ্যাক্টর K হয় এমন সংখ্যা গণনা

  4. ঠিক kটি বিজোড় সংখ্যা সম্বলিত সবচেয়ে বড় সাব-অ্যারে খুঁজে বের করা C++-তে