Board logo

标题: [其他] 批处理可不可以作所有数学运算? [打印本页]

作者: nnnn111    时间: 2010-8-24 16:50     标题: 批处理可不可以作所有数学运算?

题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
作者: zcydez    时间: 2010-8-24 18:01

开平方根……
有哪位高手
作者: TX_kakashi    时间: 2010-8-24 22:38

我想到的是set num=0,然后一点点set /a num+=1,直到得到正确的结果。>_<
作者: Batcher    时间: 2010-8-25 00:19     标题: 回复 3楼 的帖子

可以先google一下有没有好的数学公式
作者: terse    时间: 2010-8-25 02:07

效率不怎么样
  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%i in (1 1 1000) do set /a n=%%i*%%i,_!n!=n
  3. for /l %%i in (1 1 %n%) do (
  4.     set /a i=%%i+100,j=i+168
  5.     if defined _!i! if defined _!j! echo %%i
  6. )
  7. pause
复制代码

作者: qq106942397    时间: 2010-8-25 19:45

答案是:156
  1. @echo off&setlocal enabledelayedexpansion
  2. (for /l %%a in (10 1 300) do (set /a X=%%a*%%a
  3. echo.%%a^^=!X!
  4. ))>X.txt
  5. for /f "tokens=2 delims==" %%a in (X.txt) do (
  6. set /a Z=%%a-100
  7. set /a Z=!Z!+168
  8. for /f "tokens=2 delims==" %%b in ('findstr /X ".*=!Z!" X.txt') do (
  9. set /a Z=%%b-168
  10. echo..!Z!+100=%%a;        .!Z!+168^=%%b
  11. findstr /X ".*=%%a .*=%%b" X.txt
  12. ))   
  13. pause
复制代码
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
我只是理解?+100和?+168分别加...

[ 本帖最后由 qq106942397 于 2010-8-26 09:39 编辑 ]
作者: sgaizxt001    时间: 2010-8-25 20:34

terse,你的效率不高的原因可能是定义的变量太多了原因吧?如果缩小一点范围的话效率应该就提高了
6楼明显不对,156+100+168=424
作者: sleepinglord    时间: 2010-8-27 15:13

一个数+100是a^2,+268是b^2,用b^2 - a^2 = 168;
(b+a)(b-a) = 168;因为b+a和b-a的奇偶性必然相同,因此可以知道a,b都可以被2整除
设a' = a/2; b' = b/2,则(a‘+b')(b'-a') = 42;
同理,a'+b'和b'-a'的奇偶性也相同,而42能被2整除但不能被4整除,因此无解!
作者: slore    时间: 2010-8-27 21:24

楼上分析的不错,可惜最后推导错了,导致与正确结果无缘,可惜啊。

这个数为:
21

261

1581

[ 本帖最后由 slore 于 2010-8-28 09:35 编辑 ]




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2