hdu 6129 Just do it(杨辉三角)

来源:互联网 发布:网络连接状态未知 编辑:程序博客网 时间:2024/05/18 20:08

按照

我也推了一下,没看出杨辉三角,我把偶数个的a,b都整合为0,。。。然后找规律找了半天,然而。。。。是我菜了。这是一个斜的杨辉三角根据他给的公式C(n,m)=C(n,m-1)+C(n-1,m)看出是一个斜的杨辉三角,


以第一个数A为例,同样很显然,我们第i行,第j列的答案,其系数为C(i+j-2,j-1)。


如果C(i+j-2,j-1)为奇数,第j列肯定会亦或上a,j+1列亦或b……

所以

#include<stdio.h>#include<algorithm>#include<iostream>#include <string.h>#include <math.h>#include <iostream>#include <stdio.h>#include <vector>#include <queue>using namespace std;int a[200009];int b[200009];int main(){ int t; scanf("%d",&t); while(t--) {     int n,m;     scanf("%d%d",&n,&m);     for(int i=1;i<=n;i++)        scanf("%d",&a[i]);        memset(b,0,sizeof(b));     for(int i=1;i<=n;i++)     {         int x=m+i-2;         int y=i-1;         if((x&y)==y)            for(int j=i;j<=n;j++)            b[j]^=a[j-i+1];     }     for(int i=1;i<n;i++)        printf("%d ",b[i]);     printf("%d\n",b[n]); }    return 0;}




原创粉丝点击