HDU 6129 Just do it ——(找规律)

  思路见:http://blog.csdn.net/qq_32506797/article/details/77206167

  利用二进制讲m次转化成log次然后进行转移。

  代码如下:

 1 #include <stdio.h>
 2 #include <algorithm>
 3 #include <string.h>
 4 using namespace std;
 5 const int N = 2e5 + 5;
 6 
 7 int T, n, m, a[N];
 8 
 9 int main()
10 {
11     scanf("%d",&T);
12     while(T--)
13     {
14         scanf("%d%d",&n,&m);
15         for(int i=1;i<=n;i++) scanf("%d",a+i);
16         while(m)
17         {
18             int temp = m & -m;
19             for(int i=temp+1;i<=n;i++) a[i] ^= a[i-temp];
20             m -= temp;
21         }
22         for(int i=1;i<=n;i++) printf("%d%c",a[i],i==n?'
':' ');
23     }
24     return 0;
25 }
原文地址:https://www.cnblogs.com/zzyDS/p/7404317.html