1. 程式人生 > >cf#516B. Equations of Mathematical Magic(二進位制,位運算)

cf#516B. Equations of Mathematical Magic(二進位制,位運算)

https://blog.csdn.net/zfq17796515982/article/details/83051495

題意:解方程:a-(a^x)-x=0 給出a的值,要求計算解(非負)的個數

題解:需要^和 - 起到相同的效果。

1^1=0 1-1=0

1^0=1 1-0=1

0^0=0 0-0=0,

0^1=1 0-1=-1

a的二進位制位上為1時,x的二進位制位上為1或者0,異或和減的效果相同。

a的二進位制有幾個1,就表示解的個數有2的幾次方個

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
5 int t; 6 while(~scanf("%d",&t)) 7 { 8 while(t--) 9 { 10 long long n; 11 scanf("%lld",&n); 12 long long ans=0; 13 int num=0; 14 while(n) 15 { 16 if(n&1) 17 {
18 n/=2; 19 num++; 20 } 21 else 22 { 23 n/=2; 24 } 25 } 26 ans=pow(2,num); 27 printf("%lld\n",ans); 28 } 29 } 30 return
0; 31 }