hdu6129(二)
来源:互联网 发布:三金冠淘宝店值多少钱 编辑:程序博客网 时间:2024/06/05 08:44
题目链接
题目意思
给你一个包含n个数的序列A和一个数m,序列B中的数是序列A经过异或得到的,比如:b[i]=a[1]^a[2]^…..^a[i]。现在让你求经过m次异或后,序列B的值。
解题思路
我们写下其前五项的值可以发现我们设定ans【i】【j】表示进行到第i次,第j个位子的答案的话,ans【i】【j】有推导式:
ans【i】【j】=ans【i-1】【j】^ans【i】【j-1】;
- 1
- 1
从图中我们可以看出对于每一项,他的系数就是杨辉三角的值,那么如果当前位子系数为奇数的话,结果就会有贡献。
对于杨辉三角,第x次变换第y项是C(x+y-2,y-1);
C(n,m),如果n&m==m则C(n,m)为奇数,考虑第一项对后面每一项的贡献是奇数还是偶数,依次类推后面的项数产生的贡献情况。
具体情况看代码吧!
代码部分
#include <iostream>#include <string.h>#include <stdio.h>#include <algorithm>using namespace std;int a[2050000];int b[2050000];int main(){ int t; scanf("%d",&t); while(t--) { int n,m; scanf("%d%d",&n,&m); memset(b,0,sizeof(b)); for(int i=1; i<=n; i++) scanf("%d",&a[i]); for(int i=1; i<=n; i++) { int y=i-1; int x=i+m-2; if((x&y)==y)///判断为奇数 { for(int j=i; j<=n; j++) b[j]^=a[j-i+1]; } } for(int i=1; i<=n; i++) { if(i>1) printf(" "); printf("%d",b[i]); } printf("\n"); }}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
阅读全文
0 0
- hdu6129(二)
- hdu6129-( Lucas定理)
- hdu6129
- hdu6129
- HDU6129 Just do it (找规律)
- Hdu6129 Just do it(2017多校第7场)
- Just do it————(多校第7场 hdu6129)
- HDU6129 Just do it(前缀异或+杨辉三角)
- hdu6129 二进制+数学
- HDU6129-Just do it
- hdu6129 Just do it
- HDU6129 Just do it
- HDU6129-Just do it
- HDU6129 Just do it【规律】
- hdu6129 just do it 递推 思维
- HDU6129 Just do it[组合数学]
- 2017 多校7场 hdu6129 蜜汁规律
- HDU6129(杨辉三角和万恶的Lucas)
- php面试题之四——PHP面向对象(基础部分)
- linux工作中软件运行安装常见问题
- 简单的HTML标签学习
- WKWebView问题小结
- rqnoj 116
- hdu6129(二)
- Blat_类BLAST 比对工具 & GNU Parallel
- Deer的英语学习之路--渐入佳境-2017.08.31
- HTML5的主体结构元素
- SpringMvc的手写版(PS:只是闲来无事写的简化版,仅供大家理解SpringMvc的运作原理)
- Linux虚拟机的Mysql启动失败 ERROR! Multiple MySQL running but PID file could not be found (
- jquery.extend() 方法详解
- 5、flask第五站-简单数据库
- 类型转换