Board logo

标题: [数值计算] 批处理怎样计算出100元买100只鸡(有难度哦)? [打印本页]

作者: ithinkican    时间: 2010-12-27 17:51     标题: 批处理怎样计算出100元买100只鸡(有难度哦)?

用100元买100只鸡,其中公鸡5元一只、母鸡3元一只、小鸡1元三只,结果是100只鸡中有多少只公鸡、多少只母鸡、多少只小鸡,该怎样写代码解释出来呢?(有难度吗?)
作者: Batcher    时间: 2010-12-27 18:10

批处理实现百钱买百鸡,如何买?
http://bbs.bathome.net/thread-471-1-1.html

百钱买百鸡
http://bbs.bathome.net/thread-221-1-1.html
作者: broly    时间: 2010-12-27 18:42

  1. '//VBS百元买百鸡 @CODE BY Broly
  2. '//声明:此VBS由Broly制作,代码仅作学习研究之用。使用前请三思而行,产生不良后果均与本人无关!
  3. Const SUM=100
  4. Dim i,j,k,res,str
  5. For i=0 To SUM/5
  6.   For j=0 To Int(SUM/3)
  7.     For k=0 To SUM*3
  8.       res=i*5+j*3+k/3  '小鸡一元3只
  9.       If res=100 And i+j+k=100 Then
  10.         str=str & "公鸡:" & i & Space(3) & _
  11.              "母鸡:" & j & Space(3) & _
  12.              "小鸡:" & k & vbCrLf
  13.       End If
  14.     Next
  15.   Next
  16. Next
  17. WScript.Echo "方案:" & vbCrLf & str
复制代码

[ 本帖最后由 broly 于 2010-12-27 18:47 编辑 ]
作者: ithinkican    时间: 2010-12-27 20:57     标题: 我之所以发在此版块

就是想用批处理做出来
而不是VBS
作者: greenworld    时间: 2010-12-27 21:00

昨晚用手机发的代码,发现勉强能完成任务,但不知怎么,小鸡不被3整除时也有答案出来,可见批处理对小数的处理不太严谨...这里加了两行代码,对余数判断一下,已经OK了...
  1. @echo off
  2. for /l %%a in (0,1,20) do (
  3.         for /l %%b in (0,1,33) do (
  4.                 set /a c=100-%%a-%%b
  5.                 call :A  %%a %%b %%c%%
  6.         )
  7. )
  8. goto :eof
  9. :A
  10. set/a sum=%1*5+%2*3+%3/3
  11. set/a a=%3%%3
  12. if %sum% equ 100 if %a% equ 0 (
  13.         echo 公鸡:%1
  14.         echo 母鸡:%2
  15.         echo 小鸡:%3
  16.         echo.
  17.         pause>nul
  18. )
  19. goto :eof
复制代码

[ 本帖最后由 greenworld 于 2010-12-28 11:18 编辑 ]
作者: greenworld    时间: 2010-12-27 21:04

手机回复的,写程序难啊,还不能检测对错,不知行不?执行效率就肯定不理想,期待高手出招
作者: broly    时间: 2010-12-27 21:57     标题: 回复4L

思路是一样的
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /l %%i in (0 1 25) do (
  4.   for /l %%j in (0 1 34) do (
  5.     for /l %%k in (0 1 300) do (
  6.       set/a y=%%k%%3
  7.       if !y! equ 0 (
  8.         set/a sum1=%%i*5+%%j*3+%%k/3
  9.         set/a sum2=%%i+%%j+%%k
  10.         if !sum1! equ 100 (
  11.            if !sum2! equ 100 (
  12.              echo 公鸡:%%i   母鸡:%%j   小鸡:%%k
  13.          )
  14.       )
  15.       )
  16.     )
  17.   )
  18. )
  19. pause
复制代码





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