您将如何找到范围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?

您提到术语:Natural Number.

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

但是您将如何处理负数?

供您参考,Natural number does not contain any negative number.这些是自然数:

N = {0,1,2,3,...}

N =(1,2,3,4,...}

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

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

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