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

প্রতিযোগিতামূলক প্রোগ্রামিং-এ C++ ট্রিকস

প্রতিযোগিতামূলক প্রোগ্রামিং-এ সময় বাঁচাতে C++-এর কিছু হ্যান্ডি ট্রিকস খুব কাজে আসে। নিচে সেগুলো উদাহরণসহ দেওয়া হলো।

১. % অপারেটর ছাড়া বিজোড়/জোড় চেক

if ((n & 1) != 0) { /* বিজোড় */ } else { /* জোড় */ }

২. শিফট অপারেটর দিয়ে গুন/ভাগ

y = x << 2; // x * 4
y = x >> 2; // x / 4

৩. XOR দিয়ে সওয়াপ (থার্ড ভেরিয়েবল ছাড়া)

x ^= y; y ^= x; x ^= y;

৪. strlen() ছাড়া স্ট্রিং লুপ

for (int i = 0; s[i]; i++) cout << s[i];

৫. emplace_back() vs push_back()

emplace_back() ইন-প্লেস কনস্ট্রাকশন করে, অতিরিক্ত কপি/মুভ এড়ায়। ভেক্টর, লিস্ট ইত্যাদিতে দ্রুত।

৬. বিল্ট-ইন GCD

__gcd(x, y); // GCC/Clang এক্সটেনশন

C++17 থেকে std::gcd (header <numeric>) স্ট্যান্ডার্ড।

৭. গ্লোবাল অ্যারে বড় সাইজ

মেইনে ~106, গ্লোবালে ~107 পর্যন্ত অ্যারে ডিক্লেয়ার করা যায়।

৮. লগ দিয়ে MSD (Most Significant Digit)

n = 4578;
double k = log10(n);
k = k - floor(k);
int msd = pow(10, k); // 4

৯. লগ দিয়ে ডিজিট কাউন্ট

int digits = floor(log10(n)) + 1;

১০. ২-এর পাওয়ার চেক

bool isPow2 = x && !(x & (x - 1));

১১. STL এলগরিদম: all_of, any_of, none_of

all_of(begin, end, pred);
any_of(begin, end, pred);
none_of(begin, end, pred);

১২. copy_n দিয়ে কপি

copy_n(src, n, dest);

১৩. iota দিয়ে সিকোয়েন্স

iota(arr, arr+5, 15); // 15,16,17,18,19

১৪. বাইনারি লিটারেল (C++14)

int x = 0b1101; // 13

১৫. অল्टरনেটিভ টোকেন: and, or, not

if (x < 10 and x > 5) cout << "True";
  1. C++-এ STL ব্যবহার করে BFS (কম্পিটিটিভ কোডিং için)

  2. C++ প্রোগ্রামিং ল্যাঙ্গুয়েজ কী?

  3. প্রতিযোগিতামূলক প্রোগ্রামিংয়ের জন্য পাইথন ইনপুট মেথডসমূহ

  4. প্রতিযোগিতামূলক কোডিং-এর জন্য পাইথন ট্রিকস