华为OD机试-数据分类

news/2024/7/20 16:44:51 标签: python, 算法, 华为od, 华为机试

题目描述

对一个数据a进行分类,
分类方法是,此数据a(4个字节大小)的4个字节相加对一个给定值b取模,
如果得到的结果小于一个给定的值c则数据a为有效类型,其类型为取模的值。
如果得到的结果大于或者等于c则数据a为无效类型。

比如一个数据a = 0x01010101b = 3
按照分类方法计算:(0x01 + 0x01 + 0x01 + 0x01) % 3 = 1
所以如果c等于2,则此a就是有效类型,其类型为1
如果c等于1,则此a是无效类型

又比如一个数据a = 0x01010103b = 3
按分类方法计算:(0x01 + 0x01 + 0x01 + 0x03) % 3 = 0
所以如果c = 2则此a就是有效类型,其类型为0
如果c = 0则此a是无效类型

输入12个数据,
第一个数据为c,第二个数据为b
剩余10个数据为需要分类的数据

请找到有效类型中包含数据最多的类型,
并输出该类型含有多少个数据

输入描述

输入12个数据用空格分割,
第一个数据为c,第二个数据为b
剩余10个数据为需要分类的数据。

输出描述

请找到有效类型中包含数据最多的类型,
并输出该类型含有多少个数据。

示例一

输入

3 4 256 257 258 259 260 261 262 263 264 265

输出

3

说明

10个数据4个字节相加后的结果分别是
1 2 3 4 5 6 7 8 9 10
故对4取模的结果为
1 2 3 0 1 2 3 0 1 2
c3所以012都是有效类型
类型为12的有3个数据
类型为03的只有两个

示例二

输入

1 4 256 257 258 259 260 261 262 263 264 265

输出

2

代码实现

python"># coding utf-8
# 先验知识:ox代表16进制数,要取它的第四位,可以直接 x & 15
# 4字节相加计算方式,以26516为例:
# 二进制: 0110 0111 1001 0100
# 字节数 1 2 3 4
# 如何得到第一个字节:
# 将第一个字节右移3个字节,即是34=12位
# 结果:0000 0000 0000 0110 = 6
# 如何得到第二个字节:
# 将第二个字节右移2个字节,即是24=8位
# 结果:0000 0000 0110 0111
# 现在第二个字节移到了第四个字节,但是第一个字节也移到了第三个字节
# 怎么才能得到我们想要的呢,和0000 0000 0000 0000 1111做与(&)运算即可
# 即:0000 0000 0110 0111
# &0000 0000 0000 1111
# ————————————
# 0000 0000 0000 0111=7
# 第三第四字节以此类推
# 得出公式:(26516>>12)&15+(26516>>8)&15+(26516>>4)&15+26516&15

class Solution:
    def dataClassify(self, c, b, arr):
        data = arr
        count = 0
        res = [0 for i in range(len(data))]
        for i in range(len(data)):
            a1 = (data[i] >> 12) & 15
            a2 = (data[i] >> 8) & 15
            a3 = (data[i] >> 4) & 15
            a4 = data[i] & 15
            if (a1 + a2 + a3 + a4) % b < c:
                count += 1
                res[(a1 + a2 + a3 + a4) % b] += 1
        res.sort()
        return res[-1]


if __name__ == '__main__':
    s = input("input(c b arr1 arr2 .....arrx):").split(' ')
    arr = [int(s[i]) for i in range(len(s))]
    c = arr[0]
    b = arr[1]
    arr = arr[2:]
    solution = Solution()
    print(solution.dataClassify(c, b, arr))


http://www.niftyadmin.cn/n/4942082.html

相关文章

win10 安装ubuntu子系统并安装宝塔

1、安装子系统 2、ubuntu 中安装宝塔 这里需要注意的 &#xff1a; 大部分文章上写的是“面板账户登录信息”不能直接访问&#xff0c;要改成127.0.0.1&#xff1a;8888去访问。 这种情况适合“面板账户登录信息”端口就是8888。 想我的就是32757 这时你就要用 http://127.0…

antd中Switch组件的使用

<Switch> 是 Ant Design 中的一个组件&#xff0c;用于在开关之间切换。checkedChildren 是 <Switch> 组件的一个属性&#xff0c;用于指定在开关打开时显示的文本或 React 元素。 以下是 <Switch> 组件的基本语法&#xff1a; import { Switch } from ant…

django中实现事务/django实现悲观锁乐观锁案例

django中实现事务的几种方式 # 1 全局开启事务---> 全局开启事务&#xff0c;绑定的是http请求响应整个过程DATABASES {default: {#全局开启事务&#xff0c;绑定的是http请求响应整个过程ATOMIC_REQUESTS: True, }}from django.db import transaction# 局部禁用事务trans…

DP——背包问题

DP——背包问题 01背包问题分数背包问题多重背包问题完全背包问题 当我们谈论背包问题时&#xff0c;可以想象成一个小朋友要去旅行&#xff0c;但是他只能带一个容量有限的背包。他有一些物品可以选择放入背包&#xff0c;每个物品都有自己的重量和价值。小朋友的目标是在不超…

k8s ----POD控制器详解

目录 一&#xff1a;pod控制器 1、Pod控制器及其功用 2、pod控制器类型 3、Pod与控制器之间的关系 二&#xff1a;Deployment 三&#xff1a;SatefulSet 1、StatefulSet组成 2、为什么要有headless&#xff1f; 3、为什么要有volumeClaimTemplate&#xff1f; 4、实现…

kotlin的列表

在 kotlin中&#xff0c;列表是一种常见的数据结构&#xff0c;用于存储有序的元素集合。 kotlin的标准库提供了 List 接口及其实现类 ArrayList、LinkedList 等&#xff0c;以及一些扩展函数来操作和处理列表。 1.创建列表 // 创建一个可变列表 val mutableList mutableLis…

OC调用Swift编写的framework

一、前言 随着swift趋向稳定&#xff0c;越来越多的公司都开始用swift来编写苹果相关的业务了&#xff0c;关于swift的利弊这里就不多说了。这里详细介绍OC调用swift编写的framework库的步骤 二、制作framework 1、新建项目&#xff0c;选择framework 2、填写framework的名称…

leetcode 力扣刷题哈希表初尝试

哈希表 刷题初尝试 哈希表基础知识242. 有效的字母异位词383. 赎金信49. 字母异位词分组438. 找到字符串中所有字母异位词 哈希表基础知识 哈希表是一种数据结构&#xff0c;也叫散列表。哈希表中存储的是键值对&#xff0c;即(key&#xff0c;value)&#xff0c;根据key直接查…