इस समस्या में, हमें दो संख्याएँ दी गई हैं और हमें यूलर की चार वर्ग पहचान का उपयोग करके संख्याओं का गुणनफल खोजने की आवश्यकता है।
यूलर की चार वर्ग पहचान दो संख्याओं के गुणनफल को खोजने की विधि है जिसे चार वर्गों के योग का उपयोग करके दर्शाया जा सकता है संख्या का यदि संख्याओं को चार वर्गों के योग के रूप में दर्शाया जा सकता है।
उत्पाद a * b को चार वर्गों के योग के रूप में दर्शाया जा सकता है यदि
a =x1
2
+ x2
2
+ x3
2
+ x4
2
b =y1
2
+ y2
2
+ y3
2
+ y4
2
a * b =z1
2
+ z2
2
+ z3
2
+ z4
2
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट:
ए =54 =2*2 + 3*3 + 4*4 + 5*5
बी =10 =1*1 + 2*2 + 1*1 + 2*2
आउटपुट: 1*1 + 1*1 + 3*3 + 23*23
स्पष्टीकरण:
a और b का गुणनफल =540,
जिसे कई तरह से दर्शाया जा सकता है। हम यहां एक समाधान पर विचार करेंगे,
540 =1*1 + 1*1 + 3*3 + 23*23 =1 + 1 + 9 + 529
समाधान दृष्टिकोण -
समस्या को हल करने के लिए चार वर्ग संयोजनों में से प्रत्येक को आजमाने के लिए परीक्षण विधि का उपयोग करके समस्या का एक आसान समाधान है। इसके लिए हम नेस्टेड लूप का उपयोग करेंगे, प्रत्येक वर्ग मान के लिए एक नेस्टेड लूप। और फिर परिकलित मान ज्ञात करें और योग प्रतिनिधित्व के सभी संभावित संयोजनों को प्रिंट करें।
यह समाधान थोड़ा जटिल है और समय जटिलता क्रम की है
O((a*b)
4
)
हमारे समाधान की कार्यप्रणाली को दर्शाने वाला कार्यक्रम,
उदाहरण
#includeनेमस्पेस का उपयोग कर std;void findEulerSquareNumberValue(int a, int b) { int prod =a * b; इंट समस्क्वेयर =0; for (int x =0; x <=sqrt(prod); x++) { for (int y =x; y <=sqrt(prod); y++) { for (int z =y; z <=sqrt(prod); z++) { के लिए (int k =z; k <=sqrt(prod); k++) { sumSquare =(x*x) + (y*y) + (z*z) + (k*k); अगर (sumSquare ==prod) { cout<<"उत्पाद "<