সমস্যা বিবৃতি
N পৃষ্ঠাগুলির একটি বই দেওয়া হয়েছে, কাজটি হল পৃষ্ঠার ন্যূনতম সংখ্যা গণনা করা একটি পছন্দসই পৃষ্ঠা K পেতে৷
-
আমরা হয় বইয়ের সামনের দিক থেকে (যেমন পৃষ্ঠা 1 থেকে) বা বইয়ের পিছনের দিক থেকে (যেমন পৃষ্ঠা নম্বর N) থেকে পৃষ্ঠাগুলি উল্টানো শুরু করতে পারি।
-
প্রতিটি পৃষ্ঠার সামনে এবং পিছনে দুটি দিক রয়েছে, প্রথম পৃষ্ঠাটি ছাড়া, যার শুধুমাত্র পিছনের অংশ এবং শেষ পৃষ্ঠাটি বইয়ের পৃষ্ঠাগুলির সংখ্যার উপর নির্ভর করে শুধুমাত্র পিছনের দিক থাকতে পারে৷
যদি N =5 এবং K =4 হয় তবে আমাদের সর্বনিম্ন 1 পৃষ্ঠা উল্টাতে হবে −
-
আমরা যদি সামনে থেকে পৃষ্ঠা ঘুরানো শুরু করি তবে 2টি মোড় প্রয়োজন (1) -> (2, 3) -> (4,5)
-
যদি আমরা পেছন থেকে পৃষ্ঠা ঘুরানো শুরু করি, (4, 5) 1 টার্ন প্রয়োজন পৃষ্ঠা ঘুরানো =1
সুতরাং, ন্যূনতম সংখ্যক পৃষ্ঠা উল্টেছে =1.
অ্যালগরিদম
চূড়ান্ত ফলাফল −
গণনা করতে নীচের সূত্রটি ব্যবহার করুন <পূর্ব>1. K জোড় হলে, সামনের দূরত্ব =(K – 0)/2 এবং পিছনের দূরত্ব =(N – 1 – K)/22। K বিজোড় হলে, সামনের দূরত্ব =(K – 1)/2 এবং পিছনের দূরত্ব =(N – K)/2উদাহরণ
#include#include namespace ব্যবহার করে std;int getMinPageTurns(int n, int k){ if (n % 2 ==0) { ++n; } রিটার্ন মিনিট((k + 1) / 2, (n -k + 1) / 2);}int main(){ int n =5, k =4; cout <<"প্রয়োজনীয় পৃষ্ঠা ঘুরে =" < আউটপুট
আপনি যখন উপরের প্রোগ্রামটি কম্পাইল এবং এক্সিকিউট করবেন। এটি নিম্নলিখিত আউটপুট −
তৈরি করেপ্রয়োজনীয় পৃষ্ঠার মোড় =1