求大犇证明一下
  • 板块灌水区
  • 楼主CJR_Rain
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/12/17 22:22
  • 上次更新2024/12/18 16:10:45
查看原帖
求大犇证明一下
1382345
CJR_Rain楼主2024/12/17 22:22

刚做了一篇站外题 题目是这样的:

说明

给出区间 (p,q)(p,q)qpq≥p ,求 p ^ (p+1) ^ (p+2)......^ q 。

输入格式

输入 2 个数 p,q ,中间用空格分隔 (1pq1018)(1≤p≤q≤10^{18})

输出格式

输出一个答案

输入数据1

3 8

输出数据1

11

这题看数据范围就知道不能暴力算 我也研究出来题解了 如下:

#include <stdio.h>

long long Xor(long long n) {
    
    switch (n & 3) {
            
        case 0: return n;
        case 1: return 1;
        case 2: return n + 1;
        case 3: return 0;
    }
}

int main() {
    
    long long n,m;
    scanf("%lld%lld",&n,&m);

    printf("%lld",Xor(n - 1) ^ Xor(m));

    return 0;
}

虽然是做出来了 但是有点瞎猫碰上死耗子的感觉 就是我的证明过程不是很完善 写完代码了也不理解 求大犇帮忙正式证明一下

2024/12/17 22:22
加载中...