समस्या विवरण
हमें एक समकोण समद्विबाहु त्रिभुज दिया गया है। समद्विबाहु त्रिभुज में दो भुजाएँ समान लंबाई की होती हैं। समकोण त्रिभुज में ऊंचाई और आधार एक-दूसरे के लंबवत होते हैं। लक्ष्य इस त्रिभुज के अंदर फिट होने वाले 2 वर्ग इकाई वाले वर्गों की अधिकतम संख्या ढूंढना है। आधार या ऊंचाई (दोनों समान) इनपुट के रूप में लिए जाते हैं। वर्गों की संख्या आउटपुट होती है।
नीचे दिए गए चित्र को देखें:
दिए गए त्रिभुज जिसकी ऊंचाई ag और आधार gd है, में 3 वर्ग (प्रत्येक भुजा 2) फिट होते हैं। कोनों 'a' और 'd' से, त्रिभुज aib और cde कभी भी किसी वर्ग में योगदान नहीं देंगे। इसलिए हमें हमेशा इन त्रिभुजों के लिए 2 इकाई अतिरिक्त लंबाई की आवश्यकता होती है। अब शेष आधार gd (या ऊंचाई ag) को 2 से विभाजित करके वर्गों की गिनती करें। ऊंचाई के साथ भी यही स्थिति है।
while(base > 2)
squares += (base - 2) / 2
base = base - 2
// सूत्र Ap = b*(b+1)/2 का उपयोग करें... जहां नया b = b-2
उदाहरण 1
इनपुट: आधार: 12
आउटपुट: वर्गों की संख्या: 15
व्याख्या:
आधार 12 > 2, वर्ग 10/2 = 5, नया आधार 12-2 = 10 आधार 10 > 2, वर्ग 8/2 = 4, नया आधार 10-2 = 8 आधार 8 > 2, वर्ग 6/2 = 3, नया आधार 8-2 = 6 आधार 6 > 2, वर्ग 4/2 = 2, नया आधार 6-2 = 4 आधार 4 > 2, वर्ग 2/2 = 1, नया आधार 4-2 = 2 आधार 2 > 2 गलत कुल वर्ग = 5+4+3+2+1 = 15
उदाहरण 2
इनपुट: 5
आउटपुट: वर्गों की संख्या: 1
व्याख्या:
आधार 5 > 2, वर्ग 3/2 = 1, नया आधार 5-2 = 3 आधार 3 > 2, वर्ग 1/2 = 0, नया आधार 3-2 = 1 आधार 1 > 2 गलत कुल वर्ग = 1
दृष्टिकोण
- पूर्णांक चर
baseत्रिभुज का आधार संग्रहीत करता है। - फ़ंक्शन
numofSquares(int b)आधार b वाले त्रिभुज में फिट होने वाले वर्गों की संख्या गिनता है। - सबसे पहले
b = b - 2- कोनों से अतिरिक्त स्थान हटाएं। - सूत्र के अनुसार,
b = floor(b/2), यह नया b, b*(b+1)/2 वर्ग रख सकता है जिनकी भुजा 2 है। - गणना को वर्गों की संख्या के रूप में लौटाएं।
C प्रोग्राम उदाहरण
#include <stdio.h>
#include <math.h>
int numofSquares(int b) {
// कोनों से अतिरिक्त भाग हटाएं जिसकी हमें हमेशा आवश्यकता होती है
b = (b - 2);
// चूंकि प्रत्येक वर्ग का आधार 2 की लंबाई का होता है
b = floor(b / 2);
return b * (b + 1) / 2;
}
int main() {
int base = 8;
printf("Maximum no. of square that can be accommodated: %d", numofSquares(base));
return 0;
}
आउटपुट
Maximum no. of square that can be accommodated: 6