您将如何找到l到r范围内的所有自然数的XOR,其中-(10 ^ 18)<= l,r <= 10 ^ 18?

问题描述 投票:0回答:1

我知道这是当1 <= l,r <= 10 ^ 18时如何实现的,但是如何处理负数?

long long int xorf(long long int n){
    long long int mod=n%4;
    switch(mod){
        case 0:return n;
            break;
        case 1:return 1;
            break;
        case 2:return n+1;
            break;
        case 3:return 0;
            break;
    }
    int main(){
    long long int l,r;
    long long int xo=0;
        cin>>l>>r;
        xo = (xorf(l-1)^xorf(r));
        cout<<xo<<endl;
    }
c++ bitwise-operators
1个回答
0
投票

在标题上您正在询问的问题

您如何找到全自然数的XOR在l到r的范围内,其中-(10 ^ 18)<= l,r <= 10 ^ 18?

您提到术语:自然数

在描述选项中,您担心负数:

但是您将如何处理负数?

供您参考,自然数不包含任何负数

为了解决此问题,您无需担心负数。仅在l=0时处理。

如果您真的需要找到负数的XOR,那可能是另一个问题。

© www.soinside.com 2019 - 2024. All rights reserved.