列表

详情


NC54559. XOR sum

描述

You are given two positive integers l and r,you shoud answer l⊕(l+1)⊕⋯⊕r,where ⊕ denotes the bitwise XOR operation. In XOR operation we perform the comparison of two bits, being 1 if the two bits are different, and 0 if they are the same. For example:

输入描述

The input contain two integers l ,r (1 ≤ l ≤ r ≤1018

输出描述

The only output line should contain a single integer

示例1

输入:

1 2

输出:

3

说明:

1⊕2=3

示例2

输入:

3 6

输出:

4

说明:

3⊕4⊕5⊕6=4

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++14(g++5.4) 解法, 执行用时: 3ms, 内存消耗: 492K, 提交时间: 2020-01-11 12:27:20

#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll vec[100000];
int main(){
    ll a,b,t;
    scanf("%lld%lld",&a,&b);
    t=a*(a&1)^b*!(b&1)^!!(((a^b)+1)&2);
    printf("%lld\n",t);
    return 0;
}

C++11(clang++ 3.9) 解法, 执行用时: 3ms, 内存消耗: 608K, 提交时间: 2020-02-25 15:47:59

#include<stdio.h>
int main()
{
	long long a,b,ans;
	scanf("%lld%lld",&a,&b);
	ans=a*(a&1)^b*!(b&1)^!!(((a^b)+1)&2);
	printf("%lld\n",ans);
}

Python3(3.5.2) 解法, 执行用时: 25ms, 内存消耗: 3436K, 提交时间: 2020-01-11 12:17:10

n,m=map(int,input().split())
t=n-1&3
tt=m&3
print((1 if t&1 else n-1)^t//2^(1 if tt&1 else m)^tt//2)

上一题