我是靠谱客的博主 甜美香水,最近开发中收集的这篇文章主要介绍AtCoder Grand Contest 043 B - 123 Triangle (组合数学&奇偶性),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

AtCoder Grand Contest 043 B - 123 Triangle (组合数学&奇偶性)

题目传送门

题意:给长度为n由(1,2,3)组成序列求按相邻绝对差值运算后结果是多少。

分析:
------ step1.由于是绝对差值,所以(1,2,3)等价于(0,1,2)运算.
-------step2.结果只能在(0,1,2)中,首先可以对奇偶性进行判断。
-------step3.根据杨辉三角可知每个数的使用次数为C(n-1,i)如果最后1的使用次数为奇数结果肯定为1,因为1与0或2相减结果都为1。
-------step4.接下来讨论结果为0或2的情况。
------------pos1.结果为2,肯定结果倒推,2->{0,2}->{0,2,0}一直推下取可知原序列不可能有1,所以当序列中无1时,就相当于0和2进行异或运算,同样每个数贡献次数也是C(n-1,i)由于0^任何数都为0,所以只需考虑2的次数,如果2的次数为奇数,答案为2.
------------pos2.其他情况结果都为0.

一个结论:
在这里插入图片描述
简要证明方法见我的另一个博客:传送门

AC代码

#include<bits/stdc++.h>
using namespace std;
int main(){
	int b[3]={},n,f=0;
	string a;
	cin>>n>>a;
	for(int i=0;i<n;i++) 
	{
		--a[i];
		if(a[i]=='1') f=1;
		b[a[i]-'0']+=(((n-1)&i)==i);
	}
	if(b[1]&1) puts("1");
	else if(!f&&(b[2]&1)) puts("2");
	else puts("0");
	return 0;
}

最后

以上就是甜美香水为你收集整理的AtCoder Grand Contest 043 B - 123 Triangle (组合数学&奇偶性)的全部内容,希望文章能够帮你解决AtCoder Grand Contest 043 B - 123 Triangle (组合数学&奇偶性)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部