কম্পিউটার

সীমাবদ্ধতাগুলিকে সন্তুষ্ট করে এমন একটি পয়েন্ট খুঁজে পেতে C++ কোড


ধরুন, আমাদের দুটি বিন্দু দেওয়া হল a =(x1, y1) এবং b =(x2, y2)। দুটি বিন্দুর মধ্যে ম্যানহাটনের দূরত্ব হল dist(a, b) =|x1 - x2| + |y1 - y2|। যদি a-এর স্থানাঙ্ক (0, 0) হয় এবং বি-এর স্থানাঙ্ক (x, y) হয়, তাহলে আমাদের একটি বিন্দু c খুঁজে বের করতে হবে যেমন dist(a, c) =dist(a, b)/ 2 এবং dist( b, c) =dist(a, b)/2. যদি এমন একটি বিন্দু পাওয়া না যায়, তাহলে আমরা -1, -1 প্রিন্ট করি।

সুতরাং, ইনপুট যদি x =13, y =7 এর মত হয়, তাহলে আউটপুট হবে 6, 4।

পদক্ষেপ

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

if x mod 2 is same as 0 and y mod 2 is same as 0, then:
   print( x / 2, y / 2)
otherwise when (x + y) mod 2 is same as 1, then:
   print(- 1, - 1)
Otherwise,
   print(x / 2, (y + 1) / 2)

উদাহরণ

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

#include <bits/stdc++.h>
using namespace std;
#define N 100
void solve(int x, int y) {
   if(x % 2 == 0 && y % 2 == 0)
      cout<< x / 2 <<' '<< y / 2 <<endl;
   else if((x + y) % 2 == 1)
      cout<< -1 <<' '<< -1 <<endl;
   else
      cout<< x / 2 <<' '<< (y + 1) / 2 << endl;
}
int main() {
   int x = 13, y = 7 ;
   solve(x, y);
   return 0;
}

ইনপুট

13, 7

আউটপুট

6 4

  1. A এবং b সংখ্যাগুলি খুঁজুন যা C++ এ প্রদত্ত শর্ত পূরণ করে

  2. একটি সংখ্যায় সংখ্যার গণনা খুঁজুন যা সংখ্যাটিকে C++ এ ভাগ করে

  3. এমন একটি বিন্দু খুঁজুন যাতে ম্যানহাটনের দূরত্বের যোগফল C++ এ ন্যূনতম হয়

  4. একটি প্রদত্ত বিন্দু কভার করে এমন সেরা ফিট আয়তক্ষেত্র খুঁজে পেতে C++ প্রোগ্রাম