已知两数之和,求两数乘积最大

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了已知两数之和,求两数乘积最大相关的知识,希望对你有一定的参考价值。

其实这题没有什么固定公式。只能去试,我们现在按照两数之和是10.
那么就是有可能是1*9=9,2*8=16,3*7=21,4*6=24一直到5*5=25.
就得出两数之差最小的乘积最大。
参考技术A 服了,刚看点看到,这种题真有人问?
无论你怎么算,代入法都能最快解答。因为总和一定时,乘数差值为0,就是2数乘积的最大值,无论是什么数都不例外。
公式:x+y=k
解:x=k/2,y=k/2
x≠y时,就有一个无限小的差值,但不能明确,可设为p,一个+p,一个-p,就是最大乘积
还拿方程算,真的假的你们??

p5 不用+-求两数之和 (leetcode371)

一:解题思路

对于这样的题目,不能使用加(+)、减(-),从而求两数之和。连最基本的+,-都不能用,那么肯定就要想到位运算了。找到里面的规律,进而总结出一般性的结论出来。比如,来举个例子,9+11 在二进制的层面来进行运算,为什么要用9和11两个数呢?因为他们包含了相加的多种情况在里面。

二:完整代码示例 (C++版和Java版)

Java递归版:

class Solution 
{
    public int getSum(int a, int b) 
    {
           return b==0?a:getSum(a^b,(a&b)<<1);
    }
}

Java迭代版:

class Solution
{
    public int getSum(int a, int b)
    {
           while(b!=0)
           {
               int sum=a^b;
               int carry=(a&b)<<1;
               
               a=sum;
               b=carry;
           }
           
           return a;
    }
}

C++版本与Java版本类似,就不在阐述。

以上是关于已知两数之和,求两数乘积最大的主要内容,如果未能解决你的问题,请参考以下文章

p5 不用+-求两数之和 (leetcode371)

给定一个数组,求两数之和等于某个值

Leetcode-求两数之和

两数之和

C语言中求两数相乘的程序

[C语言]从键盘上输入两个整数num1和num2,判断两数之和与两数乘积的大小关系?