Codeforces Round #647 (Div. 2) - Thanks, Algo Muse!

  A. Johnny and Ancient Computer

#pragma GCC optimize(2)
#include 
#define rush() int T;cin>>T;while(T--)
#define go(a) while(cin>>a)
#define ms(a,b) memset(a,b,sizeof a)
#define E 1e-8
#define debug(a) cout<<"*"<>a>>b;
        if(a==b){cout<<0<b){
            swap(a,b);
        }
        int num=0;
        while(a

B. Johnny and His Hobbies 

本来还想从异或的性质去考虑,结果没发现规律,暴力还真过了,没想到的是官方题解也是暴力

#pragma GCC optimize(2)
#include 
#define rush() int T;cin>>T;while(T--)
#define go(a) while(cin>>a)
#define ms(a,b) memset(a,b,sizeof a)
#define E 1e-8
#define debug(a) cout<<"*"<mp;
    int a[N],b[N];
int32_t main()
{
    IOS;
    rush(){
        cin>>n;
        for(i=0;i>a[i];
        }
        if(n==2){
            if(a[0]==0) {cout<

C. Johnny and Another Rating Drop(数学)

这个题的解决思路需要看每一位上的贡献,也就是说

0000

0001

0010

0011

0100

最右边的一位贡献是n ,再向左一步,贡献值变成了n/2,以此类推        

//#pragma GCC optimize(2)
#include 
#include 
#include 
#define rush() int T;cin>>T;while(T--)
#define go(a) while(cin>>a)
#define ms(a,b) memset(a,b,sizeof a)
#define E 1e-8
#define debug(a) cout<<"*"<>n;
        ll ans=0,cur=n;
        while(cur){
            ans+=cur;
            cur>>=1;
        }
        cout<

 

 D. Johnny and Contribution

 

 

 

你可能感兴趣的:(CF,位运算)