Biorąc pod uwagę długi int x, policzyć wartości które spełniają następujące warunki:XOR programowanie logiczna rada
XORx>x
a < x
gdzie i x są długie liczby całkowite i XOR jest bitowego operatora XOR
Jak byś go o ukończeniu tego problemu?
Powinienem również wspomnieć, że wejście x może być tak duży, jak 10^10
udało mi się dostać brute force rozwiązania przez iteracji ponad 0 do x sprawdzania warunków i zwiększając wartość licznika .. jednak nie jest to optymalne rozwiązanie ...
jest to brute force, że próbowałem. Działa, ale jest bardzo wolny dla dużych wartości x.
for(int i =0; i < x; i++)
{
if((0 < i && i < x) && (i^x) > x)
count++;
}
Byłoby wspaniale, gdyby spadkodawcy mogli wymienić przyczynę swojego głosowania, w przeciwnym razie musielibyśmy je nazwać niezręcznymi. –
Nie w dół, ale to nie ma nic wspólnego z programowaniem. Jest to matematyczny fakt dotyczący liczb, które wymagają dowodu. –
Dla x> 0, dowolny bit, który wynosi 1 na ai 0 na x spowoduje, że^x> x, z wyjątkiem MSB, który spowoduje, że będzie ujemny. – stark