কম্পিউটার

C++ এ পয়েন্টে পৌঁছানো


ধরুন আমাদের একটি প্রারম্ভিক বিন্দু (sx, sy), এবং লক্ষ্য বিন্দু (tx, ty), আমাদের পরীক্ষা করতে হবে যে সূচনা বিন্দু থেকে শেষ বিন্দু পর্যন্ত চলনের একটি ক্রম বিদ্যমান কিনা। এখানে একটি বিন্দু (x, y) নেওয়া এবং এটিকে (x, x+y) বা (x+y, y) তে রূপান্তর করা।

সুতরাং যদি ইনপুটগুলি (1, 1) এবং (4,5) হয় তবে উত্তরটি সত্য হবে, এর কারণ হল (1,1) থেকে (2,1), তারপর (3,1), তারপর (4) ,1), তারপর (4,5)।

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

  • যখন tx> sx এবং ty> sy, −
      করুন
    • যদি tx> ty হয়, তাহলে −
      • tx :=tx mod ty
    • অন্যথায়
      • ty :=ty mod tx
  • রিটার্ন (সত্য যখন sx tx এবং sy এর মত হয় <=ty AND (ty - sy) mod tx 0 এর মত হয়) বা (sy ty AND x>=sx AND (tx - sx) mod ty হল 0)

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

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   bool reachingPoints(int sx, int sy, int tx, int ty) {
      while(tx > sx && ty > sy){
         if(tx > ty){
            tx %= ty;
         }else ty %= tx;
      }
      return (sx == tx && sy <= ty && (ty - sy) % tx == 0) || (sy == ty && tx >= sx && (tx - sx) % ty == 0);
   }
};
main(){
   Solution ob;
   cout << (ob.reachingPoints(1,1,4,5));
}

ইনপুট

1
1
4
5

আউটপুট

1

  1. C++ এ static_assert

  2. C++ এ m সমরেখা সহ মোট n বিন্দু সহ ত্রিভুজের গণনা

  3. C++ এ একটি লাইনে সর্বোচ্চ পয়েন্ট

  4. C++ এ মধ্যবিন্দু ব্যবহার করে আয়তক্ষেত্রের কোণগুলি খুঁজুন