CF 424C Magic Formulas

由于异或满足交换律,对于(1-n)%k (k=1,2,3..)

有n/i个(0 - k-1)和1个(0 - n%k)

方法1:区间操作num[i]表示前i个数都加上某一值。

方法2:预处理xor[i]表示1-i的异或值。根据n/i是否是奇数异或

#include
#include
using namespace std;

int num[1000005];
int main(){
    int n,ans=0,tt;
    cin>>n;
    for(int i=1;i<=n;i++){
        int t=n/i;
        int p=n%i;
        if(t&1){
            //for(int j=p+1;j


你可能感兴趣的:(算法)