ได้รับสี่เหลี่ยมผืนผ้าขนาด L × B (L ≥ B) ต้องการนับจำนวนสี่เหลี่ยมจัตุรัสทุกขนาดที่อยู่ภายในได้
สูตร
- สี่เหลี่ยมจัตุรัสขนาด 1×1: L×B ชิ้น
- สี่เหลี่ยมจัตุรัสขนาด 2×2: (L-1)×(B-1) ชิ้น
- ...
- สี่เหลี่ยมจัตุรัสขนาด B×B: (L-B+1)×1 ชิ้น
รวม = Σᵢ₌₁ᴮ (L-i+1)(B-i+1)
สามารถคำนวณได้จาก: ผลรวม i² สำหรับ i=1..B บวก (L-B)×B×(B+1)/2
ตัวอย่าง
อินพุต: L = 4, B = 2
เอาต์พุต: 11 (8 ชิ้น 1×1, 3 ชิ้น 2×2)
อินพุต: L = 3, B = 3
เอาต์พุต: 14 (9+4+1)
ตัวอย่างโค้ด C++
#include <iostream>
using namespace std;
int numofSquares(int l, int b) {
int squares = 0;
for (int i = 1; i <= b; i++) {
squares += i * i; // สี่เหลี่ยมในส่วน B×B
}
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