P3908 数列之异或

性质(J 表示奇数个数,v表示n为奇数,x表示偶数)

1:1 0001  J 1 V

2:3 0001|0010 = 0011  J 1 X

3:0 0011|0011 = 0000  J 2 V

4:4 0000|0100 = 0100  J 2 X

5:1 0100|0101 = 0001  J 3 V

6:7 0001|0110 = 0111  J 3 X

7:0 0111|0111 = 0000  J 4 V

8:8 0000|1111 = 1111  J 4 X

由此推出$O(1)$ 的线性式子

 

#include<bits/stdc++.h> 
int main(){long long n;std::cin>>n;std::cout<<((n==1)?1:((n%2==0)?(((n/2)%2==0)?n:n+1):((((n/2)+1)%2==0)?0:1)));}
posted @ 2024-09-30 09:28  Jucex  阅读(1)  评论(0编辑  收藏  举报