问题标题: 酷町堂:6614 数列游戏2

0
0
已解决
王泽轩
王泽轩
资深天翼
资深天翼

题目:

今天放学后老师布置了一道家庭作业:是首先给出一组数 1,2,3,……,n。现要求在这组数中每相邻两项之间插入“⨁”,计算出数列各项异或的结果。
例:
C⨁B=D: 将C,D按位异或得到D

现给出n的取值,请你输出 1⨁2⨁3⨁4……(n-1)⨁n的计算结果。

倒霉代码50分:

#include<iostream>
using namespace std;
int main(){
    long long n,sum=0;
    cin>>n;
    for(long long i=1;i<=n;i++){
        sum=(sum^i);
    }
    cout<<sum;
    return 0;
}

 


0
已采纳
汪恺恒
汪恺恒
中级启示者
中级启示者

数论啊(或数位DP)

1<=n<=10^18

你直接暴力?

思路:

对于4的倍数,xor的和都等于它本身,于是求出小于n的最小4的倍数,往上推就好了

 

0
我要回答