দৈর্ঘ্য L এবং প্রস্থ B বিশিষ্ট একটি আয়তক্ষেত্র দেওয়া আছে যেখানে L>=B। লক্ষ্য হল LxB আকারের আয়তক্ষেত্রে কতগুলো বর্গ আয়োগ করা যায় তা বের করা।
প্রতি LxB আয়তক্ষেত্রে L*B সংখ্যক 1x1 বর্গ থাকে। সর্বোচ্চ বর্গ BxB আকারের। L=B=1 হলে বর্গ=১। L=B=2 হলে বর্গ=১+৪=৫ (১টি 2x2, ৪টি 1x1)। L=B=3 হলে ১+৪+৯=১৪। L=B=4 হলে ১+৪+৯+১৬=৩০।
প্রতি BxB আয়তক্ষেত্রে বর্গের সংখ্যা: for i=1 to B, বর্গ += i*i।
L>B হলে অতিরিক্ত বর্গ যোগ হয়। L=B+1 হলে যোগ হবে L+(L-1)+...+3+2+1 = L(L+1)/2। অতিরিক্ত L-B কলামের জন্য যোগ হবে (L-B)*B(B+1)/2।
মোট বর্গ = BxB-এ বর্গ + (L-B)*B(B+1)/2। সূত্র B(B+1)(2B+1)/6 ব্যবহার করা যেতে পারে।
উদাহরণ
ইনপুট: L=4, B=2
আউটপুট: আয়তক্ষেত্রে বর্গের সংখ্যা: ১১
ব্যাখ্যা: ৮টি 1x1 এবং ৩টি 2x2 বর্গ।
ইনপুট: L=3, B=3
আউটপুট: আয়তক্ষেত্রে বর্গের সংখ্যা: ১৪
ব্যাখ্যা: ৯টি 1x1, ৪টি 2x2, ১টি 3x3।
অ্যাপ্রোচ
- length এবং breadth ইন্টিজার দিয়ে আয়তক্ষেত্রের মাত্রা।
numofSquares(int l, int b)ফাংশন মাত্রা গ্রহণ করে lxb আয়তক্ষেত্রে বর্গের সংখ্যা রিটার্ন করে।- সর্বোচ্চ বর্গ BxB: for i=1 to b, squares += i*i।
- যদি l>b হলে, যোগ হবে (l-b)*b*(b+1)/2।
- নোট: length >= breadth ধরে রাখা হয়।
উদাহরণ কোড
#include <iostream>
using namespace std;
int numofSquares(int l, int b) {
int squares = 0;
for (int i = 1; i <= b; i++) {
squares += i * i;
}
squares += (l - b) * b * (b + 1) / 2;
return squares;
}
int main() {
int length = 5, breadth = 4;
cout << "Count of squares is :" << numofSquares(length, breadth);
return 0;
}
আউটপুট
Count of squares is : 40