0
点赞
收藏
分享

微信扫一扫

【每日一题】备战冲击蓝桥杯国赛——Python程序设计 | Day19 | 异或数列 | 真题代码解析


每天刷一道题,话不多说,先刷近两年的题吧,现在是2021年的真题了,如果有一起的可以加入我们!!!

一起来刷题,冲击国赛!!!


扫码 我的主页 网页左边下方 群二维码

加入方式:可以在下方的微信名片加我,然后拉你入群。(记得备注暗号我要拿国奖


2021年第十二届蓝桥杯赛题总览

2020年的题就是这些,类型分为两种,分别是结果填空和程序设计,我们每天刷一道题,省赛没问题!
在这里插入图片描述

异或数列 (题目)

(本题总分:20分)

官方练习系统:https://www.lanqiao.cn/problems/1462/learning/


—>【问题描述】

在这里插入图片描述


解析


通过阅读题干,本题——难度中上:⭐⭐⭐⭐

考察类型:动态规划、取模

考察知识点:dp


分析:


代码

Python代码实现:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2022/3/13 14:36
# @Author  : 府学路18号车神
# @Email   :yurz_control@163.com
# @File    : demo.py

# 请在此输入您的代码
T = int(input())
for _ in range(T):
    a = list(map(int, input().split()))
    dp = []
    sum = 0
    ma = 0
    n = len(a)
    for i in range(1, n):
        dp.append(a[i])
        sum ^= a[i]
        ma = max(ma, a[i])

    if sum == 0:  # 每个不同位上的0和1个数分别为偶数
        print(0)
        continue

    x = 1
    while x < ma:
        x <<= 1

    while x > 0:
        one = 0
        zero = 0
        for i in dp:
            if i & x == 0:  # 关于x的第某位是否为0
                zero += 1
            else:
                one += 1
        if one % 2 == 1:  # 关于x的第某位1的个数为奇数
            if zero % 2 == 1 and one > 1:
                print(-1)
            else:
                print(1)
            break
        x >>= 1  # 关于x的第某位1的个数为偶数,则退位向下再次判断

在这里插入图片描述

由此,我们可以快速得出结果,验证完毕!明天最后一天,加油!!!


今天开刷第 十九 天,欢迎大家加入,一起变强,一起自律,一起上国赛!!!

有不同解法的可以在下面留言哦!~

往期刷题路线:

刷题路线Detail
2020年
Day-01门牌制作
Day-02寻找2020
Day-03跑步锻炼
Day-04蛇形填数
Day-05排序
Day-06装饰珠
Day-07成绩统计
Day-08单词分析
Day-09数字三角形
Day-10平面切分
2021年
Day-11卡片
Day-12直线
Day-13货物摆放
Day-14路径
Day-15回路计数
Day-16时间显示
Day-17杨辉三角
Day-18左孩子右兄弟

官方刷题练习系统:http://lx.lanqiao.cn/


ღ( ´・ᴗ・` )

举报

相关推荐

0 条评论