কম্পিউটার

একটি লাইন C++ এর মধ্য দিয়ে যাবে এমন ইউনিট ক্ষেত্রফলের বর্গের সংখ্যা নির্ণয় কর?


উদ্দেশ্য হল প্রদত্ত দুটি শেষ বিন্দু (x1,y1) এবং (x2,y2) দিয়ে একটি রেখা অতিক্রম করবে বর্গক্ষেত্রের সংখ্যা নির্ধারণ করা।

আমাদের রেখাটি যে বর্গের মধ্যে দিয়ে যায় তার সংখ্যা বের করতে আমাদের খুঁজে বের করতে হবে:x বিন্দুর মধ্যে পার্থক্য (dx) =x2-x1, y বিন্দুর মধ্যে পার্থক্য (dy) =y2-y1, dx এবং dy যোগ করে এবং বিয়োগ করে তাদের gcd (ফলাফল) =dx + dy – gcd(dx,dy)।

unitSquares(int x1, int y1, int x2, int y2) ফাংশনটি x1,y1 এবং x2,y2 চারটি মান নেয়। x2 এবং x1 এর মধ্যে পরম পার্থক্য এবং y2 এবং y1 এর মধ্যে পরম পার্থক্য গণনা করা হয়। dx,dy-এর gcd থেকে dx এবং dy যোগ ও বিয়োগ করা হয়। ফলাফল উত্তরে সংরক্ষিত হয় এবং প্রিন্ট করার জন্য মূলে ফিরে আসে।

int unitSquares(int x1, int y1, int x2, int y2){
   int dx = abs(x2 - x1);
   int dy = abs(y2 - y1);
   int ans = dx + dy - __gcd(dx, dy);
   return ans;
}

উদাহরণ

একটি রেখা যেখান দিয়ে যাবে সেই বর্গাকার একক ক্ষেত্রফলের সংখ্যা নির্ণয় করতে আসুন আমরা নিম্নলিখিত বাস্তবায়ন দেখি।

#include<iostream>
#include <algorithm>
using namespace std;
int unitSquares(int x1, int y1, int x2, int y2){
   int dx = abs(x2 - x1);
   int dy = abs(y2 - y1);
   int ans = dx + dy - __gcd(dx, dy);
   return ans;
}
int main(){
   int x1 = 3, y1 = 3, x2 = 12, y2 = 6;
   cout<<"The line passes through "<<unitSquares(x1, y1, x2, y2)<<" squares ";
   return 0;
}

আউটপুট

উপরের কোডটি নিম্নলিখিত আউটপুট −

তৈরি করবে
The line passes through 9 squares

  1. C++ তে বিশপ যে সমস্ত বর্গক্ষেত্র পরিদর্শন করতে পারে তার মোট সংখ্যা গণনা করুন

  2. অনুভূমিক এবং উল্লম্ব রেখার অংশগুলির মধ্যে ত্রিভুজের সংখ্যা খুঁজে পেতে C++ প্রোগ্রাম

  3. একটি লাইন C++ এর মূলের মধ্য দিয়ে যায় কিনা তা পরীক্ষা করুন

  4. একটি অ্যারেতে ন্যূনতম সংখ্যা যোগ করুন যাতে যোগফল C++ এ সমান হয়?