আমাদের একটি আয়ত দেওয়া আছে যার উচ্চতা (height) এবং প্রস্থ (width)। এই আয়তকে ২D কোঅর্ডিনেট সিস্টেমে বাম-নিচের কোণ (০,০) বিন্দুতে উপস্থাপন করা হয়েছে। লক্ষ্য হলো এই আয়তের ভেতরে কতগুলো রম্বস (rhombi) সম্ভব সেটা গণনা করা, যাতে নিচের শর্তগুলো পূরণ হয়:
- রম্বসের ক্ষেত্রফল ০ এর চেয়ে বড় হবে।
- রম্বসের দুটি কর্ণ (diagonals) x এবং y অক্ষের সমান্তরাল হবে।
- রম্বসের চারটি কোণার কোঅর্ডিনেট পূর্ণসংখ্যা (integer) হবে।
উদাহরণ দিয়ে বুঝি
ইনপুট − length=3, width=3
আউটপুট − দिये गये আয়তের ভেতরে সম্ভাব্য রম্বসের সংখ্যা: ৪
ব্যাখ্যা − নিচের চিত্রে height=width=3 এর আয়ত এবং ৪টি রম্বস দেখানো হয়েছে যাদের ক্ষেত্রফল >০, কর্ণ দুটি অক্ষের সমান্তরাল এবং কোঅর্ডিনেট পূর্ণসংখ্যা:
প্রথম: [ (1,0), (2,1), (1,2), (0,1) ] দ্বিতীয়: [ (2,0), (3,1), (2,2), (1,1) ] তৃতীয়: [ (2,1), (3,2), (2,3), (1,2) ] চতুর্থ: [ (1,1), (2,1), (1,2), (0,1) ]
ইনপুট − length=2, width=3
আউটপুট − দिये गये আয়তের ভেতরে সম্ভাব্য রম্বসের সংখ্যা: ২
প্রোগ্রামে ব্যবহৃত পদ্ধতি
প্রথম রম্বস যা শূন্য nahi ক্ষেত্রফল এবং পূর্ণসংখ্যা কোঅর্ডিনেট دارد, সেটি (২,২) বিন্দু থেকে শুরু হয়। i=j=2 থেকে i<=length এবং j<=width পর্যন্ত ঘুরুন। পূর্ণসংখ্যা কোঅর্ডিনেটের জন্য i এবং j কে ২ করে বাড়ান। এই কর্ণ দিয়ে তৈরি রম্বসের সংখ্যা হবে (height-i+1) × (width-j+1)।
- উচ্চতা এবং প্রস্থ পূর্ণসংখ্যা হিসেবে নিন।
possible_rhombus(int height, int width)ফাংশন আয়তের মাপ নিয়ে শর্ত পূরণকারী রম্বসের কাউন্ট রিটার্ন করে।- প্রাথমিক কাউন্ট ০ रखুন।
i=2থেকেi<=heightএবংj=2থেকেj<=widthপর্যন্ত লুপ চালান।- প্রতিটি
i,jএর জন্যtemp_1 = height-i+1এবংtemp_2 = width-j+1নিন। temp_1 * temp_2কেcount-এ যোগ করুন।iএবংjকে ২ করে বাড়ান (পূর্ণসংখ্যা কোঅর্ডিনেটের জন্য)।- শেষে
countরিটার্ন করুন।
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
long long possible_rhombus(int height, int width) {
long long count = 0;
for (int i = 2; i <= height; i += 2) {
for (int j = 2; j <= width; j += 2) {
int temp_1 = height - i + 1;
int temp_2 = width - j + 1;
count += temp_1 * temp_2;
}
}
return count;
}
int main() {
int height = 4, width = 4;
cout << "Count of number of rhombi possible inside a rectangle of given size are: " << possible_rhombus(height, width);
return 0;
}
আউটপুট
Count of number of rhombi possible inside a rectangle of given size are: 16