找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 28548|回复: 9

[其他] 请编程解决已知绝对值关系,求a和b的值

[复制链接]
发表于 2021-2-28 14:54:44 | 显示全部楼层 |阅读模式
已知 a的绝对值等于5,b的绝对值等于3,
(a - b)的绝对值等于(b-a), 请编程解决
求a和b的值。

掌握python的朋友可以试一下。
发表于 2021-2-28 16:02:44 | 显示全部楼层
回复 1# netdzb

for a in [-5, 5]:
   
    for b in [-3, 3]:
        
        if abs(a-b) == b-a:
            
            print(f"a={a}",f"b={b}")

评分

参与人数 1技术 +1 收起 理由
netdzb + 1 学习一下谢谢

查看全部评分

发表于 2021-2-28 16:24:58 | 显示全部楼层
  1. @echo off
  2. echo 已知:
  3. echo ^|a^|=5,^|b^|=3;^|a-b^|=b-a
  4. echo 求:a=?,b=?
  5. echo/
  6. echo 答:

  7. ::绝对值公式引用:
  8. ::qzwqzw@cn-dos         2007-1-17
  9. ::a取值的上下限各缩小一半        //说实话,这句意思没能理解
  10. ::set /a b=(a*2+1)%%2*a        //求绝对值公式

  11. setlocal enableDelayedExpansion
  12. ::已知
  13. set/a _0_=0,a1=5,b1=3
  14. set a_b1=b-a

  15. ::a、b的另一个可能值
  16. set/a a2=_0_-a1,b2=_0_-b1

  17. ::求解
  18. for %%a in (%a1% %a2%)do (
  19.         for %%b in (%b1% %b2%)do (
  20.                 set/a "a_b=%%a-%%b,b_a=%%b-%%a,a_b1=(a_b*2+1)%%2*a_b"
  21.                 if !a_b1! equ !b_a! echo a:%%a b:%%b
  22.         )
  23. )
  24. pause
复制代码
发表于 2021-2-28 18:31:48 | 显示全部楼层
  1. @echo off
  2. ::利用绝对值的定义构造的函数abs,#为算式,结果为变量jdz
  3. set "abs=set/a jdz=#&if !jdz! leq 0 set/a jdz=-jdz"
  4. setlocal enabledelayedexpansion

  5. for %%a in (5 -5) do (
  6.     for %%b in (3 -3) do (
  7.         set/a a=%%a,b=%%b,w=b-a
  8.         %abs:#=a-b%
  9.         if !jdz!==!w! (echo;a:%%a b:%%b)
  10.     )
  11. )
  12. pause
  13. exit
复制代码
发表于 2021-2-28 19:09:04 | 显示全部楼层
凑个热闹
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%a in (5 -5) do (
  4.     for %%b in (3 -3) do (
  5.         set/a "a=%%a-%%b,b=%%b-%%a,a=(a ^ (a >> 31)) - (a >> 31)"
  6.         if !a! equ !b!  echo a=%%a b=%%b
  7.     )
  8. )
  9. pause
复制代码
 楼主| 发表于 2021-3-1 09:44:14 | 显示全部楼层
回复 5# terse

批处理的绝对值是如何计算的?
发表于 2021-3-1 18:59:21 | 显示全部楼层
回复 6# netdzb
这是位运算
  1. set x=-5
  2. set/a "y=x >> 31, x=(x ^ y) - y"
  3. echo;%x%
复制代码
 楼主| 发表于 2021-3-1 20:42:06 | 显示全部楼层
回复 7# terse

^这个是什么意思,转义符,续行符,没看懂。
发表于 2021-3-2 04:52:54 | 显示全部楼层
回复 8# netdzb
”^“ 异或运算符  “>>” 右移
set /a 了解一下
发表于 2021-3-2 19:34:46 | 显示全部楼层
凑个热闹,prolog
  1. :- initialization(main).
  2. main :- a(A), b(B), C is abs(A - B), C #= B - A, write('A='), write(A), write(' B='), write(B), nl, fail.
  3. a(5).
  4. a(-5).
  5. b(3).
  6. b(-3).
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 10:43 , Processed in 0.010882 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表