HDU

来源:互联网 发布:java 泛型 类型转换 编辑:程序博客网 时间:2024/06/06 08:32

其实暴力输出几组应该就会发现规律了。关于严格证明,有时间想起来会补的(想得起来的话)。

代码:

#include<bits/stdc++.h>using namespace std;#define maxn 200050int a[maxn];int n,t,m;void or_a(int k){    int star=1;    for(int i=0;i<k;i++)    {        star=star<<2;    }    for(int i=star+1;i<=n;i++)    {        a[i]=a[i-star]^a[i];    }}int main(){    scanf("%d",&t);    while(t--)    {        scanf("%d%d",&n,&m);    for(int i=1;i<=n;i++)    {        scanf("%d",&a[i]);    }    int x=0,k=0;    while(m!=0)    {        x=m%4;        m/=4;        for(int i=0;i<x;i++)        {            or_a(k);//移动4的k次方        }        k++;    }    printf("%d",a[1]);    for(int i=2;i<=n;i++)    {        printf(" %d",a[i]);    }    printf("\n");    }    return 0;}