โจทย์: ให้กระดานหมากรุกขนาด size × size ต้องการนับจำนวนสี่เหลี่ยมจัตุรัสย่อยที่มีความยาวด้านเป็นเลขคี่
สูตรคำนวณ
สำหรับด้านคี่ i (1, 3, 5, ... ≤ size) จำนวนสี่เหลี่ยมขนาด i×i คือ (size - i + 1)²
ผลรวม: Σ (size - i + 1)² สำหรับ i = 1, 3, 5...
โค้ด C++
#include <bits/stdc++.h>
using namespace std;
int square_odd_length(int size) {
int count = 0;
for (int i = 1; i <= size; i += 2) {
int temp = size - i + 1;
count += temp * temp;
}
return count;
}
int main() {
int size = 6;
cout << "Count squares with odd side length in Chessboard are: "
<< square_odd_length(size);
return 0;
}
ผลลัพธ์
Count squares with odd side length in Chessboard are: 56
ตัวอย่างคำนวณ size=3
- 1×1: (3-1+1)² = 3² = 9
- 3×3: (3-3+1)² = 1² = 1
- รวม = 10
ตัวอย่างคำนวณ size=4
- 1×1: 4² = 16
- 3×3: (4-3+1)² = 2² = 4
- รวม = 20
ความซับซ้อน: Time O(size), Space O(1)