Post updated on 26th July, 2016 at 02:11 pm
আগের পর্ব অনলাইন জাজ সিরিজ – ৬ (Test case, EOF) পড়া যাবে এখান থেকে।
আজকে আমরা আলোচনা করব দারুণ একটি প্রোগ্রামিং কনটেস্ট প্ল্যাটফর্ম Codeforces এর জনপ্রিয় একটি প্রবলেম নিয়ে।
Codeforces 4/A – Watermelon
যথারীতি উপরের লিংক থেকে প্রবলেমটা পড়ে ফেল। কোডফোর্সের বৈশিষ্ট্য হচ্ছে মোটামুটি অল্প কথায় প্রবলেম বলে দেয়া থাকে। সূক্ষ্ণ টাইপের কিছু হিন্টস থাকে। যেগুলো ধরতে না পারলে WA নিশ্চিত!
প্রবলেম পড়ে যেটা বুঝা গেল, W কেজি ওজনের তরমুজ কেনা হয়েছে। এখন সেটা দুই বন্ধুর মধ্যে ভাগ করতে হবে। তারা দুইজনেই জোড় সংখ্যা অনেক পছন্দ করে। তাদের দাবী হচ্ছে এই W কেজিকে দুইজনের মধ্যে ভাগ করে দিতে হবে যেন উভয়েই জোড় সংখ্যক পরিমাণে তরমুজ পায়। এই দুইটা লাইনেই মূল প্রবলেম বলা আছেঃ Pete and Billy are great fans of even numbers, that’s why they want to divide the watermelon in such a way that each of the two parts weighs even number of kilos, at the same time it is not obligatory that the parts are equal.
তোমার কাজ হল বের করা তরমুজটাকে evenly divide করা যায় কিনা সেটা বের করা। উভয় ভাগে জোড় সংখ্যা ফেলা গেলে প্রিন্ট করবে YES না হলে NO.
Sample I/O থেকে দেখতে পেলাম ইনপুট দেয়া আছে ৮ আর একে দুই ভাগে ভাগ করলে পাওয়া যায় ৪ এবং ৪। যাদের উভয়েই জোড় সংখ্যা। তার মানে রেজাল্ট হবে YES. আবার যদি চিন্তা করি ২০ এর ব্যাপারে। তাহলে দেখব ২ ভাগ করলে ১০-১০ পাওয়া যায়। এক্ষেত্রেও দুই ভাগেই জোড় সংখ্যা। তাই রেজাল্ট হবে YES. কিন্তু যদি ৫, ৭, ২৫ ইত্যাদি নিয়ে চিন্তা করি তাহলে দেখব এগুলোকে evenly divide করা যায় না। তাহলে প্রবলেমের সলিউশনটা কী দাঁড়াল??? যা চিন্তা করছ ঠিক তা-ই!!! অর্থাৎ ইনপুটে জোড় সংখ্যা দেয়া হলে রেজাল্ট হবে YES, বিজোড় দেয়া হলে রেজাল্ট হবে NO. ব্যস!!!
আগের লেখায় বলেছি যে Codeforces এ EOF বা Test case সাধারণত লাগে না। তাই তুমি একটা ইনপুটের জন্য প্রোগ্রাম লিখলেই হবে। তো ঝটপট করে ফেল একটা জোড়-বিজোড় বের করার প্রোগ্রাম! সাবমিট করে ফেল সুপার ইজি একটা প্রবলেম। প্রিন্ট করার শেষে new line (\n) প্রিন্ট করতে ভুলো না।
কিন্তু না!!! WA!!!
কি কারণে ওয়া খেলে? নিশ্চয়ই কোডফোর্সেসের সাইটে ঝামেলা আছে! আসলে ওদের সাইটে কোন ঝামেলা নাই। ঝামেলা আছে আমাদের কোডের লজিকে। খানিকক্ষন নিজে নিজে চিন্তা কর। না বের করতে পারলে সামনে পড়তে থাক।
আমাদের লজিক ছিল, যে কোন জোড় সংখ্যাকে evenly divide করা যায়। কিভাবে? যেমন চারকে ভাগ করলে ২-২, ৬ কে ভাগ করলে ২-৪ (সমান হওয়া কিন্তু শর্ত না), ১০ কে ভাগ করা যায় ২-৮ বা ৪-৬। তাহলে তো দেখা যাচ্ছে ঠিকই আছে। সমস্যাটা কোথায়???
আচ্ছা! ২ তো একটা জোড় সংখ্যা। একে কি evenly divide করা যায়??? :O :O :O
না, একে evenly divide করা যায় না। তাহলে এর অর্থ দাঁড়াচ্ছে, ২ বাদে বা input করা নাম্বারটা ২ এর চেয়ে বড় এবং জোড় সংখ্যা হলে আউটপুট হবে YES অন্যথায় NO!
আগের WA খাওয়া কোডটাকে একটু modify করে সাবমিট কর, আশা করি AC (Accepted) হবে। আর কোন ঝামেলা হলে কমেন্ট সেকশন তো আছেই! 🙂
It seems to me as a good post.
Thanks brother……….
You are most welcome. 🙂