কম্পিউটার টিউটোরিয়াল

সি++-এ পয়েন্টে পৌঁছানো (Reaching Points)

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

যেমন, (1, 1) এবং (4, 5) হলে, উত্তর হবে true। কারণ (1,1) -> (2,1) -> (3,1) -> (4,1) -> (4,5)।

সমাধানের ধাপসমূহ

  • যখন tx > sx এবং ty > sy
    • যদি tx > ty হয়, tx := tx % ty
    • অন্যথায় ty := ty % tx
  • রিটার্ন করুন: (sx == tx && sy <= ty && (ty - sy) % tx == 0) || (sy == ty && tx >= sx && (tx - sx) % 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. মোট n বিন্দু এবং m সংরেখ বিন্দু দিয়ে ত্রিভুজের গণনা (C++ প্রোগ্রাম)

  3. C++-এ একটি রেখায় সর্বোচ্চ পয়েন্ট (Max Points on a Line)

  4. C++-এ মিডপয়েন্ট ব্যবহার করে রেক্ট্যাঙ্গেলের কর্নার বের করা