Heim  >  Artikel  >  Backend-Entwicklung  >  Ermitteln Sie mithilfe der C++-Programmierung die Anzahl der Lösungen für die Gleichung n = x + n * x

Ermitteln Sie mithilfe der C++-Programmierung die Anzahl der Lösungen für die Gleichung n = x + n * x

WBOY
WBOYnach vorne
2023-08-26 12:05:081102Durchsuche

使用C++编程,找到方程n = x + n * x的解的个数

In diesem Artikel werden wir die Anzahl der Lösungen der Gleichung n = x + n ⊕ x ermitteln, d. h. wir müssen die Anzahl der möglichen Werte von x für einen gegebenen Wert n ermitteln, so dass n = x + n ⊕ x, wobei ⊕ die XOR-Operation darstellt.

Jetzt diskutieren wir die vollständigen Informationen über die Anzahl der Lösungen von n = x + n ⊕ x anhand geeigneter Beispiele.

Brute-Force-Methode

Wir können einfach die Brute-Force-Methode verwenden, um die Anzahl der Lösungen zu ermitteln, d. h. für einen gegebenen Wert von n wenden wir jeden ganzzahligen Wert von x beginnend bei 0 an und überprüfen, ob die Gleichung erfüllt ist, den Wert von x sollte kleiner oder gleich n sein, da das Hinzufügen eines Werts größer als n zu (n ⊕ x) niemals n als Antwort zurückgibt.

Beispiel

Finden Sie einen Wert für x, sodass n = 3 gilt? Die chinesische Übersetzung von

   n = x + n ⊕ x
Putting x = 0,
   3 = 0 + 3 ⊕ 0
3 ⊕ 0 = 3,
   3 = 3
   LHS = RHS(x = 0 satisfy the equation)
So, x = 0 is one of the solution

Example

lautet:

Example

#include <bits/stdc++.h>
using namespace std;
int main(){
    int n = 3, c=0;
    for (int x = 0; x <= n; ++x)// loop for giving value of x from 0 to n
        if (n == x + n ^ x)//checking if value of x satisfies the equation
            ++c;
    cout  << "Number of possible solutions : " << c;
    return 0;
}

Output

Number of possible solutions : 4

Dies ist ein einfaches C++-Programm, das die Anzahl der Lösungen für n = x + n ⊕ x durch Anwendung von Brute-Force-Methoden ermittelt.

Effiziente Methode

Wenn wir uns bei dieser Methode die binäre Form von n ansehen, müssen wir die Anzahl der Bits ermitteln, die auf 1 gesetzt sind, und gemäß der Gleichung können wir sagen, dass wenn n gesetzt ist , dann ist x entweder gesetzt, entweder n ⊕ x ist gesetzt, weil 1 ⊕ 1 = 0. Das bedeutet, dass n ⊕ x nicht gesetzt ist, sodass wir nun schlussfolgern können, dass für jedes gesetzte Bit in n die Anzahl der Permutationen 2^(Anzahl der gesetzten Bits) beträgt. Die chinesische Übersetzung von

Beispiel

lautet:

Beispiel

#include <bits/stdc++.h>
using namespace std;
int main (){
    int n = 3, no_of_setbits = 0;    // initialising n with value and taking count of set bits as 0
    while (n != 0){
        no_of_setbits = no_of_setbits + (n % 2);    // checking if num contains set bit.
        n = n / 2;
    }
    int result = 1 << no_of_setbits;    // calculating no. of possible solution with 2^setbits
    cout << " Number of possible solutions : " << result;
    return 0;
}

Ausgabe

Number of possible solutions : 4

Komplexität des Programms

Die zeitliche Komplexität dieses Ansatzes beträgt O(n), da wir hier Brute Force anwenden. Wir können effizientere Methoden anwenden um die Effizienz des Programms zu verbessern.

Fazit

In diesem Artikel lösen wir ein Problem, um eine Reihe von Lösungen zu finden −

n = x + n ⊕ x Wir haben auch das C++-Programm für dieses Problem und das Ganze gelernt Ansatz, mit dem wir dieses Problem gelöst haben. Wir können das gleiche Programm in anderen Sprachen wie C, Java, Python und anderen Sprachen schreiben

Das obige ist der detaillierte Inhalt vonErmitteln Sie mithilfe der C++-Programmierung die Anzahl der Lösungen für die Gleichung n = x + n * x. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen