2 条题解

  • 1
    @ 2025-03-10 16:29:30
    #include <iostream>
    using namespace std;
    
    long long compute_xor(long long n) {
        int mod = n % 4;
        if (mod == 0) return n;
        else if (mod == 1) return 1;
        else if (mod == 2) return n + 1;
        else return 0;
    }
    
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
        
        int T;
        cin >> T;
        while (T--) {
            long long l, r;
            cin >> l >> r;
            long long result = compute_xor(r) ^ compute_xor(l - 1);
            cout << result << '\n';
        }
        
        return 0;
    }
    
  • 0
    @ 2025-03-08 22:06:30
    #include<bits/stdc++.h>
    #define int long long
    using namespace std;
    int t,l,r,cm[65];
    int cg(int x)
    {
        int ans=0;
        for(int i=1;x>=cm[i-1];i++)
        {
            int a1=x/cm[i],a2=x%cm[i],dans=0;
            if(i==1)dans=a1%2^(a2==1);
            else if(a2>=cm[i-1]&&a2%2==0)dans^=cm[i-1];
            ans^=dans;
        }
        return ans;
    }
    signed main()
    {
        scanf("%lld",&t);
        cm[0]=1;
        for(int i=1;i<=63;i++)
            cm[i]=cm[i-1]*2;
        while(t--)
        {
            scanf("%lld%lld",&l,&r);
            printf("%lld\n",cg(l-1)^cg(r));
        }
        return 0;
    }
    
    
  • 1

信息

ID
1011
难度
9
分类
(无)
标签
(无)
递交数
2
已通过
2
通过率
100%
上传者