您的位置:首页 > 其它

hdu 6129 Just do it(杨辉三角)

2017-08-16 09:26 405 查看
按照


我也推了一下,没看出杨辉三角,我把偶数个的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
);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: