Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<algorithm>
- #include<cstdlib>
- #include<cstring>
- #include<cstdio>
- #include<vector>
- #include<cmath>
- #include<queue>
- #include<stack>
- #include<deque>
- #include<map>
- #include<set>
- #define MAX(a,b) (a>b?a:b)
- #define MIN(a,b) (a<b?a:b)
- #define UP upper_bound
- #define LB lower_bound
- #define LL long long
- #define Pi 3.14159265358
- #define si size()
- #define en end()
- #define be begin()
- #define fi first
- #define se second
- #define pb push_back
- #define mp make_pair
- #define ii set<int>::iterator
- #define Tree int ind, int L, int R
- #define Left 2*ind,L,(L+R)/2
- #define Right 2*ind+1,(L+R)/2+1,R
- using namespace std;
- int Z[40];
- int n, m, k, i, j, a, b, res;
- vector < int > v, g;
- main(){
- //freopen("A.in","r",stdin);
- //freopen("A.out","w",stdout);
- cin>>n>>a>>b;
- if(a==(1<<n)/2 && b==(1<<n)/2){ cout<<1; return 0; }
- while(a)
- {
- v.pb(a%2);
- a/=2;
- }
- while(b)
- {
- g.pb(b%2);
- b/=2;
- }
- for(i=0;i<v.si;i++)
- if(v[i]==1)
- Z[i]++;
- for(i=0;i<g.si;i++)
- if(g[i]==1)
- Z[i]++;
- for(i=n;i>=0;i--)if(Z[i])j=i;
- for(i=n;i>j;i--)if(Z[i]==2)res++;
- res+=n-j;
- cout<<res;
- cin>>n;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement