IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 2022华为机试真题 C++ 实现【分苹果】 -> 正文阅读

[C++知识库]2022华为机试真题 C++ 实现【分苹果】

目录

题目

思路

核心考点

Code


题目

【分苹果】

A、B两个人把苹果分为两堆,A希望按照他的计算规则等分苹果,他的计算规则是按照二进制加法计算,并且不计算进位 12+5=9(1100 + 0101 = 9),B的计算规则是十进制加法,包括正常进位,B希望在满足A的情况下获取苹果重量最多。

输入苹果的数量和每个苹果重量,输出满足A的情况下B获取的苹果总重量。

如果无法满足A的要求,输出-1。

数据范围

1 <= 总苹果数量 <= 20000

1 <= 每个苹果重量 <= 10000

输入描述:

输入第一行是苹果数量:3

输入第二行是每个苹果重量:3 5 6

输出描述:

输出第一行是B获取的苹果总重量:11

示例1?输入输出示例仅供调试,后台判题数据一般不包含示例

输入

3
3 5 6

输出

11

示例2?输入输出示例仅供调试,后台判题数据一般不包含示例

输入

8
7258 6579 2602 6716 3050 3564 5396 1773

输出

35165

思路

1:先审题,A的目标是 等分,也就是目标是一人一半。

2:不进位的二进制加法,等同于二进制的异或操作

3:B要先满足 A 的 需求,那么肯定要先判定所有苹果在不进位的二进制加法前提下能否等分,等分那就意味着分出来的两堆苹果异或的结果为 0

4:如果可以等分,那么取出最小的苹果分给 A 即可。因为所有苹果异或的结果是0,所以任意拿出1个,分成另一堆, 那么这两堆的重量,按照A的算法去算,必然是相等的 (不信可以试一试)

5:如果不能等分,则直接返回 -1。

核心考点

1:题目理解能力

2:异或的应用

Code

// Online C++ compiler to run C++ program online
#include<iostream>
#include<vector>
using namespace std;

int main() {
    //苹果个数
    int num;
    cin >> num;
    
    //苹果重量
    vector<int> weight_array;
    while (num) {
        num--;
        int weight;
        cin >> weight;
        weight_array.push_back(weight);
    }

    // 因为max_weight < 10000
    int min_weight = 10001;
    int a_weight = 0, b_weight = 0;
    for (auto x : weight_array) {
        //求和、求异或,最小苹果的重量
        a_weight ^= x;
        b_weight += x;
        min_weight = min(min_weight, x);
    }
    // 如果异或结果是0,则有解
    if (a_weight == 0) {
        cout << b_weight - min_weight << endl;
    }
    else {
        cout << -1 << endl;
    }
    return 0;
}

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-09-24 20:38:17  更:2022-09-24 20:38:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 11:43:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码