zoukankan      html  css  js  c++  java
  • 有趣的问题系列-仅能使用加减乘除,主函数,分别输出两个数的最大值和最小值

    前言

    今天我在QQ群划水的时候,我看到了一个非常有趣的问题,

    仅能使用加减乘除,主函数,输入输出,来分别输出给定两个数的最大值和最小值。禁止使用位运算。禁止使用有关任何条件判断的语句。

    这道题我思考了许久,突然想到了一个方案,因为(a > b)的时候(leftlfloordfrac{b}{a} ight floor = 0),然后(b > a)的时候(leftlfloordfrac{a}{b} ight floor = 0),如果把这个作为乘数,就能做开关门了,然后就这么想着,瞎搞出来了……

    分析

    我得到的思路是这样的,

    (max(a, b) = dfrac{a imes leftlfloordfrac{a}{b} ight floor + b imes leftlfloordfrac{b}{a} ight floor}{leftlfloordfrac{a}{b} ight floor + leftlfloordfrac{b}{a} ight floor})

    (min(a, b) = dfrac{b imes leftlfloordfrac{a}{b} ight floor + a imes leftlfloordfrac{b}{a} ight floor}{leftlfloordfrac{a}{b} ight floor + leftlfloordfrac{b}{a} ight floor})

    证明一下也非常简单。这里只证明最大,最小的也同理。

    首先(a > b),此时(leftlfloordfrac{b}{a} ight floor = 0),原式就可以变为(dfrac{a imes leftlfloordfrac{a}{b} ight floor + b imes 0}{leftlfloordfrac{a}{b} ight floor + 0}),即(dfrac{a imes leftlfloordfrac{a}{b} ight floor}{leftlfloordfrac{a}{b} ight floor} = a),符合(max)

    然后(b > a),此时(leftlfloordfrac{a}{b} ight floor = 0),原式就可以变为(dfrac{a imes 0 + b imes leftlfloordfrac{b}{a} ight floor}{0 + leftlfloordfrac{b}{a} ight floor}),即(dfrac{b imes leftlfloordfrac{b}{a} ight floor}{leftlfloordfrac{b}{a} ight floor} = b),仍然符合(max)

    最后是(a = b)的情况,此时(leftlfloordfrac{a}{b} ight floor = leftlfloordfrac{b}{a} ight floor = 1),此时原式等于(max(a, b) = dfrac{a imes 1 + b imes 1}{1 + 1}),即(dfrac{a + b}{2}),显然此时因为(a = b),所以答案就是(a),也是符合(max)的特征。

    代码,请。

    代码

    /*
     * @Author: crab-in-the-northeast 
     * @Date: 2020-04-03 10:22:07 
     * @Last Modified by: crab-in-the-northeast
     * @Last Modified time: 2020-04-03 10:24:14
     */
    #include <iostream>
    #include <cstdio>
    
    int main() {
        int a, b;
        std :: cin >> a >> b;
        std :: cout << (a * (a / b) + b * (b / a)) / (a / b + b / a) << std :: endl;
        std :: cout << (b * (a / b) + a * (b / a)) / (a / b + b / a) << std :: endl;
        return 0;
    }
    
  • 相关阅读:
    Unity中将相机截图保存本地后颜色变暗的解决方法
    《无间道》亚索盲僧上演天台对决——开发者日志(二)_为人物添加动画
    《无间道》亚索盲僧上演天台对决——开发者日志(一)_项目启动
    CCF推荐期刊会议列表(2019第五版)——《中国计算机学会推荐国际学术会议和期刊目录》
    用3dMax给lol人物模型制作表情动画并导入Unity
    与100个诺手一起跨年
    C#发邮件
    SQL的各种连接Join详解
    Oracle&SQLServer中实现跨库查询
    SQL SERVER/ORACLE连接查询更简洁方便的方式
  • 原文地址:https://www.cnblogs.com/crab-in-the-northeast/p/min-max-problem-of-two-numbers.html
Copyright © 2011-2022 走看看