Sum of Two Integers 解题报告

本文介绍了一种特殊的算法,用于计算两个整数的和而不使用传统的加法和减法运算符。通过运用二进制半加法原理,利用位操作实现加法运算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:
Calculate the sum of two integers a and b, but you are not allowed to use the operator + and -.

Example:
Given a = 1 and b = 2, return 3.

即给你两个数,让你求它们的和,但不能使用+和-

刚开始看到这个题的时候,感觉没有思路,后来借鉴了别人博客里的思想,可以用二进制半加法的思想:即两位单独的位相加其结果可以用异或得到, 进位可以用与得到.

eg:14 + 2 = 16;二进制1110+0010,进位为0010,原位置两个数相加的结果为1100
接着把进位位和原来的相加结果相加:0100(进位左移一位)+1100
进位为0100,原位置两个数相加为1000
接着把进位位和原来的相加结果相加:1000(进位左移一位)+1000
进位为1000,原位置两个数相加为0000
接着把进位位和原来的相加结果相加:10000(进位左移一位)+0000
进位为0000(当进位为0时结束),原位置两个数相加为10000=16
附上AC代码:

class Solution {
public:
    int getSum(int a, int b) {
        int carry = a&b;
        int result = a^b;
        int temp;

        while(carry){

            carry = carry<<1;
            temp = carry;
            carry = carry&result;
            result = temp^result;
        }
        return result;
    }
};
资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在当今的软件开发领域,自动化构建与发布是提升开发效率和项目质量的关键环节。Jenkins Pipeline作为一种强大的自动化工具,能够有效助力Java项目的快速构建、测试及部署。本文将详细介绍如何利用Jenkins Pipeline实现Java项目的自动化构建与发布。 Jenkins Pipeline简介 Jenkins Pipeline是运行在Jenkins上的一套工作流框架,它将原本分散在单个或多个节点上独立运行的任务串联起来,实现复杂流程的编排与可视化。它是Jenkins 2.X的核心特性之一,推动了Jenkins从持续集成(CI)向持续交付(CD)及DevOps的转变。 创建Pipeline项目 要使用Jenkins Pipeline自动化构建发布Java项目,首先需要创建Pipeline项目。具体步骤如下: 登录Jenkins,点击“新建项”,选择“Pipeline”。 输入项目名称和描述,点击“确定”。 在Pipeline脚本中定义项目字典、发版脚本和预发布脚本。 编写Pipeline脚本 Pipeline脚本是Jenkins Pipeline的核心,用于定义自动化构建和发布的流程。以下是一个简单的Pipeline脚本示例: 在上述脚本中,定义了四个阶段:Checkout、Build、Push package和Deploy/Rollback。每个阶段都可以根据实际需求进行配置和调整。 通过Jenkins Pipeline自动化构建发布Java项目,可以显著提升开发效率和项目质量。借助Pipeline,我们能够轻松实现自动化构建、测试和部署,从而提高项目的整体质量和可靠性。
You are given an array a1,a2,…,an, where all elements are different. You have to perform exactly k operations with it. During each operation, you do exactly one of the following two actions (you choose which to do yourself): find two minimum elements in the array, and delete them; find the maximum element in the array, and delete it. You have to calculate the maximum possible sum of elements in the resulting array. Input The first line contains one integer t (1≤t≤104) — the number of test cases. Each test case consists of two lines: the first line contains two integers n and k (3≤n≤2⋅105; 1≤k≤99999; 2k<n) — the number of elements and operations, respectively. the second line contains n integers a1,a2,…,an (1≤ai≤109; all ai are different) — the elements of the array. Additional constraint on the input: the sum of n does not exceed 2⋅105. Output For each test case, print one integer — the maximum possible sum of elements in the resulting array. Example inputCopy 6 5 1 2 5 1 10 6 5 2 2 5 1 10 6 3 1 1 2 3 6 1 15 22 12 10 13 11 6 2 15 22 12 10 13 11 5 1 999999996 999999999 999999997 999999998 999999995 outputCopy 21 11 3 62 46 3999999986 Note In the first testcase, applying the first operation produces the following outcome: two minimums are 1 and 2; removing them leaves the array as [5,10,6], with sum 21; a maximum is 10; removing it leaves the array as [2,5,1,6], with sum 14. 21 is the best answer. In the second testcase, it's optimal to first erase two minimums, then a maximum.
05-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值