題目鏈接:HDU6129
Just do it
Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Others)Total Submission(s): 1234 Accepted Submission(s): 724
For each test case:
The first line contains two positive integers n,m(1≤n≤2×105,1≤m≤109).
The second line contains n nonnegative integers a1...n(0≤ai≤230−1).
A single line contains n nonnegative integers, denoting the final sequence.
題目分析:列出每次異或的個數發現是楊輝三角數C(i+m-2,i-1),然後判斷奇偶,具體的證明網上有。
//
// main.cpp
// 1010 Just do it
//
// Created by teddywang on 2017/8/15.
// Copyright © 2017年 teddywang. All rights reserved.
//
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long ll;
int n,m;
int s[222222];
int b[222222];
int T;
int main()
{
scanf("%d",&T);
while(T--)
{
memset(b,0,sizeof(b));
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
scanf("%d",&s[i]);
}
for(int i=1;i<=n;i++)
{
int x=i+m-2;
int y=i-1;
if((x&y)==y)
{
for(int j=i;j<=n;j++) b[j]^=s[j-i+1];
}
}
for(int i=1;i<=n;i++)
{
printf("%d",b[i]);
if(i==n) printf("\n");
else printf(" ");
}
}
}