winter888s Ответов: 1

Как вычислить XOR двух двоичных строк и найти число различных значений этого XOR, которое может быть получено по модулю 1, 000, 000, 007 ( 109+7 ).


how to compute the XOR of two binary strings and find the number of distinct values of this XOR which can be obtained, modulo 1,000,000,007 ( 109+7 ).


Что я уже пробовал:

#include<bits/stdc++.h>
using namespace std;
int performXOR(int x, int y) 
{ 
    int res = 0; 
      
    
    for (int i = 31; i >= 0; i--)                      
    { 
      
       bool b1 = x & (1 << i); 
       bool b2 = y & (1 << i); 
         
        
        bool xoredBit = (b1 & b2) ? 0 : (b1 | b2);           
  
      
        res <<= 1; 
        res |= xoredBit; 
    } 
    return res; 
} 

int main(){
    
     int test;
    cin>>test;
    while(test--){
        
        long long a,b;
        int n;
        cin>>n;
        cin>>a>>b;
        //cout<<performXOR(a,b)<<endl;
        cout <<
        
        
        
        
        
    }
    
    return 0;
    
}

1 Ответов

Рейтинг:
12

Patrice T

Цитата:
как вычислить XOR двух двоичных строк и найти число различных значений этого XOR, которое может быть получено по модулю 1,000,000,007 ( 109+7

Без правильного контекста это ничего не значит.

Ваш код не связан со строками!

Настоящий кодекс :
int performXOR(int x, int y) 
{ 
    int res = 0; 
    for (int i = 31; i >= 0; i--)                      
    { 
       bool b1 = x & (1 << i); 
       bool b2 = y & (1 << i); 
        bool xoredBit = (b1 & b2) ? 0 : (b1 | b2);           
        res <<= 1; 
        res |= xoredBit; 
    } 
    return res; 
} 

может быть упрощен до :
int performXOR(int x, int y) 
{ 
    return x ^ y;
} 

Побитовые операторы в C/C++ - GeeksforGeeks[^]