Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

सी ++ में ओ (लॉग एन) में एक जटिल संख्या की शक्ति के लिए कार्यक्रम

x+yi और एक पूर्णांक n के रूप में एक सम्मिश्र संख्या दी गई है; यदि हम सम्मिश्र संख्या को n द्वारा शक्ति देते हैं, तो कार्य जटिल संख्या के मूल्य की गणना और प्रिंट करना है।

एक सम्मिश्र संख्या क्या है?

एक सम्मिश्र संख्या वह संख्या होती है जिसे a + bi के रूप में लिखा जा सकता है, जहाँ a और b वास्तविक संख्याएँ हैं और i समीकरण का हल है या हम एक काल्पनिक संख्या कह सकते हैं। तो, सरल शब्दों में हम कह सकते हैं कि सम्मिश्र संख्या वास्तविक संख्या और काल्पनिक संख्या का संयोजन है।

एक सम्मिश्र संख्या की शक्ति बढ़ाना

एक सम्मिश्र संख्या की शक्ति बढ़ाने के लिए हम नीचे दिए गए सूत्र का उपयोग करते हैं -

(a+bi) (c+di)=( ac−bd )+(ad+bc )i

जैसे हमारे पास एक सम्मिश्र संख्या है

2+3i और इसकी शक्ति को 5 तक बढ़ाने पर हमें -

. मिलेगा

(2+3 i) 5 =(2+3 i)(2+3i)(2+3 i)(2+3 i)(2+3i)

ऊपर दिए गए फॉर्मूले के इस्तेमाल से हमें जवाब मिलेगा -

उदाहरण

Input: x[0] = 10, x[1] = 11 /*Where x[0] is the first real number and 11 is the
second real number*/
n = 4
Output: -47959 + i(9240)
Input: x[0] = 2, x[1] =3
n = 5
Output: 122 + i(597)

उपरोक्त समस्या को हल करने के लिए हम जिस दृष्टिकोण का उपयोग कर रहे हैं -

तो, समस्या को पुनरावृत्त विधि का उपयोग करके आसानी से हल किया जा सकता है लेकिन जटिलता ओ (एन) होगी, लेकिन हमें ओ (लॉग एन) समय में समस्या को हल करना होगा। उसके लिए हम -

. कर सकते हैं
  • सबसे पहले इनपुट को एक ऐरे के रूप में लें।
  • फ़ंक्शन में x^n
      . को पावर दें
    • जांचें कि क्या n 1 है, तो x लौटाएं
    • पावर पास x और n/2 को पुनरावर्ती रूप से कॉल करें और इसके परिणाम को एक चर वर्ग में संग्रहीत करें।
    • जाँच करें कि क्या n को 2 से भाग देने पर शेषफल 0 मिलता है; यदि ऐसा है तो cmul(sq, sq) से प्राप्त परिणाम लौटाएँ
    • जांचें कि क्या n को 2 से भाग देने पर शेषफल 0 नहीं मिलता है; यदि ऐसा है तो cmul(x, cmul(sq, sq)) से प्राप्त परिणाम लौटाएं।
  • फ़ंक्शन में cmul()।
    • जांचें कि क्या x1 =a+bi और x2 =x+di, तो x1 * x2 =(a*c–b*d)+(b*c+d*a)i.
  • प्राप्त परिणामों को वापस करें और प्रिंट करें।

एल्गोरिदम

Start
Step 1-> declare function to calculate the product of two complex numbers
   long long* complex(long long* part1, long long* part2)
   Declare long long* ans = new long long[2]
   Set ans[0] = (part1[0] * part2[0]) - (part1[1] * part2[1])
   Se ans[1] = (part1[1] * part2[0]) + part1[0] * part2[1]
   return ans
Step 2-> declare function to return the complex number raised to the power n
   long long* power(long long* x, long long n)
   Declare long long* temp = new long long[2]
   IF n = 0
      Set temp[0] = 0
      Set temp[1] = 0
      return temp
   End
   IF n = 1
      return x
   End
   Declare long long* part = power(x, n / 2)
   IF n % 2 = 0
      return complex(part, part)
   End
   return complex(x, complex(part, part))
Step 3 -> In main()
   Declare int n
   Declare and set long long* x = new long long[2]
   Set x[0] = 10
   Set x[1] = -11
   Set n = 4
   Call long long* a = power(x, n)
Stop

उदाहरण

#include <bits/stdc++.h>
using namespace std;
//calculate product of two complex numbers
long long* complex(long long* part1, long long* part2) {
   long long* ans = new long long[2];
   ans[0] = (part1[0] * part2[0]) - (part1[1] * part2[1]);
   ans[1] = (part1[1] * part2[0]) + part1[0] * part2[1];
   return ans;
}
// Function to return the complex number raised to the power n
long long* power(long long* x, long long n) {
   long long* temp = new long long[2];
   if (n == 0) {
      temp[0] = 0;
      temp[1] = 0;
      return temp;
   }
   if (n == 1)
      return x;
      long long* part = power(x, n / 2);
      if (n % 2 == 0)
         return complex(part, part);
         return complex(x, complex(part, part));
}
int main() {
   int n;
   long long* x = new long long[2];
   x[0] = 10;
   x[1] = -11;
   n = 4;
   long long* a = power(x, n);
   cout << a[0] << " + i ( " << a[1] << " )" << endl;
   return 0;
}

आउटपुट

power of complex number in O(Log n) : -47959 + i ( 9240 )

  1. हेक्साडेसिमल से दशमलव के लिए C++ प्रोग्राम

    एक इनपुट के रूप में एक हेक्साडेसिमल संख्या के साथ दिया गया, कार्य दिए गए हेक्साडेसिमल संख्या को दशमलव संख्या में परिवर्तित करना है। कंप्यूटर में हेक्साडेसिमल संख्या को आधार 16 के साथ दर्शाया जाता है और दशमलव संख्या को आधार 10 के साथ दर्शाया जाता है और 0 - 9 के मूल्यों के साथ दर्शाया जाता है जबकि हे

  1. सी++ प्रोग्राम जटिल संख्या गुणा करने के लिए

    जटिल संख्याएं वे संख्याएं हैं जिन्हें a+bi के रूप में व्यक्त किया जाता है जहां i एक काल्पनिक संख्या है और a और b वास्तविक संख्याएं हैं। सम्मिश्र संख्याओं के कुछ उदाहरण हैं - 2+3i 5+9i 4+2i सम्मिश्र संख्या गुणन करने का कार्यक्रम इस प्रकार है - उदाहरण #include<iostream> using namespace std; int

  1. C++ प्रोग्राम किसी संख्या की शक्ति की गणना करने के लिए

    किसी संख्या की घात की गणना x^y के रूप में की जा सकती है जहाँ x संख्या है और y इसकी शक्ति है। उदाहरण के लिए। Let’s say, x = 2 and y = 10    x^y =1024    Here, x^y is 2^10 पुनरावर्ती और गैर-पुनरावर्ती कार्यक्रमों का उपयोग करके किसी संख्या की शक्ति की गणना की जा सकती है। इन