কম্পিউটার

C++ এ পানি ও জগ সমস্যা


ধরুন আমাদের কাছে x এবং y লিটার ক্ষমতা সহ দুটি জগ আছে। আমাদের জন্য উপলব্ধ একটি অসীম পরিমাণ জল সরবরাহ আছে. এখন আমাদের নির্ধারণ করতে হবে যে এই দুটি জগ ব্যবহার করে ঠিক z লিটার পরিমাপ করা সম্ভব কিনা। যদি z লিটার পানি পরিমাপযোগ্য হয়, তাহলে আমাদের অবশ্যই এক বা উভয় বালতির মধ্যে z লিটার পানি থাকতে হবে।

আমরা এই কয়েকটি অপারেশন করতে পারি -

  • যে কোনো জগ সম্পূর্ণরূপে পানি দিয়ে পূর্ণ করুন।

  • যে কোনো জগ খালি করুন।

  • এক জগ থেকে অন্য জগটিতে জল ঢালুন যতক্ষণ না অন্য জগটি সম্পূর্ণ পূর্ণ হয় বা প্রথম জগটি নিজেই খালি হয়।

তাই যদি x =2 এবং y =5, এবং z =4, তাহলে এটি সত্য হবে।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • যদি x + y

  • যদি x =z বা y =z, অথবা x + y =z, তাহলে সত্য ফেরত দিন

  • রিটার্ন true z x এবং y এর gcd দ্বারা বিভাজ্য, অন্যথায় মিথ্যা

উদাহরণ (C++)

আরো ভালোভাবে বোঝার জন্য নিচের বাস্তবায়নটি দেখি -

#include <bits/stdc++.h&g;
using namespace std;
class Solution {
   public:
   bool canMeasureWater(int x, int y, int z) {
      if(x + y < z) return false;
      if(x == z || y == z || x + y == z) return true;
      return z % __gcd(x, y) == 0;
   }
};
main(){
   Solution ob;
   cout << (ob.canMeasureWater(3,5,4));
}

ইনপুট

3
5
4

আউটপুট

1

  1. C++ এ মৌলিক সংখ্যা এবং ফিবোনাচি

  2. Go এবং C++ এর মধ্যে পার্থক্য।

  3. fmax() এবং fmin() C++ এ

  4. C++ এ ডিলিট() এবং ফ্রি()