এই সমস্যায়, আমাদেরকে x এবং y ক্ষমতা সহ দুটি জাহাজ এবং অসীম জল সরবরাহ করা হয়েছে। আমাদের কাজটি এমন একটি প্রোগ্রাম তৈরি করা যা একটি পাত্রে ঠিক 1 লিটার গণনা করতে সক্ষম হবে। শর্ত দেওয়া হয়েছে যে x এবং y সহ-প্রধান। কো-প্রাইম এছাড়াও আপেক্ষিকভাবে প্রাইম, পারস্পরিক প্রাইম নামেও পরিচিত সংখ্যা হল দুটি সংখ্যা যার একমাত্র সাধারণ ভাজক হিসাবে 1 আছে। সুতরাং, এটি বোঝায় যে তাদের gcd(সর্বশ্রেষ্ঠ সাধারণ ভাজক ) হল 1।
এখানে, ধরা যাক আমাদের কাছে দুটি ভেসেল আছে যার ধারণক্ষমতা x এবং V2 আছে যার ক্ষমতা y। এই দুটি পাত্র ব্যবহার করে 1 লিটার পরিমাপ করতে আমরা জল সরবরাহ থেকে প্রথম পাত্রগুলি পূরণ করব এবং তারপরে এটি দ্বিতীয়টিতে ঢেলে দেব। এই প্রক্রিয়াটি চলতে থাকে যতক্ষণ না জাহাজ V1 তে 1 লিটার জল থাকে।
সমস্যাটি বোঝার জন্য একটি উদাহরণ দেওয়া যাক,
ইনপুট ৷ −
V1 =5, V2 =8V1 =5; V2 =0 -> V1 থেকে V2 তে জল ঢালুন এবং এটি রিফিল করুন। V1 =5; V2 =5 -> V1 থেকে V2 তে জল ঢালুন এবং এটি পুনরায় পূরণ করুন। V1 =2; V2 =0 -> V1 থেকে V2 পর্যন্ত জল ঢালুন। এখন, V2 পূর্ণ, এটি খালি করুন। V1 =5; V2 =2 -> V1 থেকে V2 তে জল ঢালুন এবং এটি রিফিল করুন। V1 =5; V2 =7 -> V1 থেকে V2 তে জল ঢালুন এবং এটি পুনরায় পূরণ করুন। V1 =4; V2 =0 -> V1 থেকে V2 পর্যন্ত জল ঢালুন। এখন, V2 ভরা হয়েছে, এটি খালি করুন। V1 =1; V2 =0 -> V1 থেকে V2 তে জল ঢালুন এবং এটি পুনরায় পূরণ করুন৷ এখানে, V1 1 লিটার জল পরিমাপ করে৷
উদাহরণ
সমাধান চিত্রিত করার জন্য প্রোগ্রাম,
#includeনেমস্পেস ব্যবহার করে std;int x, y, V1, V2 =0;int transferWater(int amt1, int amt2) { if (amt1 + amt2 আউটপুট
<প্রি> ভেসেল 1:5 | ভেসেল 2:0 ভেসেল 1:5 | ভেসেল 2:5 ভেসেল 1:2 | ভেসেল 2:0 ভেসেল 1:5 | ভেসেল 2:2 ভেসেল 1:5 | ভেসেল 2:7 ভেসেল 1:4 | ভেসেল 2:0 ভেসেল 1:5 | ভেসেল 2:4 ভেসেল 1:1 | ভেসেল 2:0