Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นับจำนวนช่องสี่เหลี่ยมในสี่เหลี่ยมผืนผ้าใน C++


เราได้รับสี่เหลี่ยมด้านยาว L และความกว้าง B เพื่อให้ L>=B เป้าหมายคือการหาจำนวนสี่เหลี่ยมจัตุรัสที่สี่เหลี่ยมขนาด LXB สามารถรองรับได้

นับจำนวนช่องสี่เหลี่ยมในสี่เหลี่ยมผืนผ้าใน C++

รูปด้านบนแสดงสี่เหลี่ยมผืนผ้าขนาด 3 X 2 มี 2, 2X2 สี่เหลี่ยม และ 6,1X1 สี่เหลี่ยมจัตุรัสอยู่ในนั้น

สี่เหลี่ยมทั้งหมด=6+2=8.

  • สี่เหลี่ยมขนาด LXB ทุกอันมีหมายเลข L*B สี่เหลี่ยม 1X1

  • สี่เหลี่ยมที่ใหญ่ที่สุดคือขนาด BXB

  • สำหรับ L=B=1 กำลังสอง =1

  • สำหรับ L=B=2 กำลังสอง =1 + 4 =5. ( 1 ของ 2X2, 4 ของ 1X1 )

  • สำหรับ L=B=3 สี่เหลี่ยมจัตุรัส =1 + 4 + 9 =14 ( 1 ของ 3X3, 4 ของ 2X2, 9 ของ 1X1 )

  • สำหรับ L=B=4 สี่เหลี่ยมจัตุรัส =1 + 4 + 9 + 16 =30 ( 1 ของ 4X4, 4 ของ 3X3, 9 ของ 2X2, 16 ของ 1X1 )

  • ……………..

  • สำหรับสี่เหลี่ยม BXB ทุกจำนวนสี่เหลี่ยมคือ

for ( i=1 to B )
No. of squares + = i*i.

เมื่อ L>B. จะเพิ่มช่องสี่เหลี่ยมเพิ่มเติม เมื่อ L=B+1 ( 1 คอลัมน์เพิ่มเติมจาก B ) จากนั้นสี่เหลี่ยมที่เพิ่มเข้ามาจะเป็น L + ( L-1) + ….+3+2+1 =L(L+1)/2

ดังนั้นสำหรับคอลัมน์ L-B เพิ่มเติม ช่องสี่เหลี่ยมที่เพิ่มเข้ามาจะเป็น ( L-B ) * (B)(B+1)/2

  • กำลังสองทั้งหมดจะเป็นกำลังสองใน BXB + (L-B) * (L)(L+1)/2.

  • คุณยังสามารถใช้สูตร B(B+1)(2B+1)/6 สำหรับชุดข้อมูล (1 + 4 + 9 +......BXB) ในขั้นตอนที่ 8

มาทำความเข้าใจกับตัวอย่างกัน

ป้อนข้อมูล − L=4, B=2

ผลผลิต − นับสี่เหลี่ยมในรูปสี่เหลี่ยม − 11

คำอธิบาย − 8 สี่เหลี่ยมของ 1X1 และ 3 ของ 2X2

นับจำนวนช่องสี่เหลี่ยมในสี่เหลี่ยมผืนผ้าใน C++

ป้อนข้อมูล − L=3, B=3

ผลผลิต − จำนวนช่องสี่เหลี่ยมในรูปสี่เหลี่ยมผืนผ้า − 14

คำอธิบาย − 9 สี่เหลี่ยมของ 1X1 , 4 ของ 2X2 และ 1 ของ 3X3

นับจำนวนช่องสี่เหลี่ยมในสี่เหลี่ยมผืนผ้าใน C++

แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้

  • เราใช้ความยาวและความกว้างของจำนวนเต็มสำหรับขนาดของสี่เหลี่ยมผืนผ้า

  • ฟังก์ชัน numofSquares(int l, int b) ใช้มิติข้อมูลและส่งกลับจำนวนสี่เหลี่ยมจัตุรัสในสี่เหลี่ยมขนาด lXb

  • สำหรับสี่เหลี่ยมที่ใหญ่ที่สุด bXb ใช้สำหรับลูปตั้งแต่ 1 ถึง b และเพิ่ม i*i แต่ละตัวลงในกำลังสอง

  • ตอนนี้ถ้า l>b. ช่องสี่เหลี่ยมที่เพิ่มใหม่จะเป็น (lb)(b)(b+1)/2 เพิ่มลงในช่องสี่เหลี่ยม

  • ส่งกลับสี่เหลี่ยมตามผลลัพธ์ที่ต้องการ

หมายเหตุ − รักษาความยาว>=ความกว้าง

ตัวอย่าง

#include<iostream>
using namespace std;
int numofSquares(int l, int b){
   int squares=0;
   for(int i=1;i<=b;i++) //squares inside biggest square of size breadth X breadth{
      squares += i*i;
   }
   squares+=(l-b)*b*(b+1)/2;
   return squares;
}
int main(){
   int length = 5, breadth = 4; //keep length always >= breadth
   cout << "Count of squares is :"<< numofSquares(length,breadth);
}

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -

Count of squares is :40