返回列表 发帖

批处理实现百钱买百鸡,如何买?

用100块钱买鸡,价格如下:公:5$, 母:3$, 小:1$两只,一共多少种买法?

@echo off&setlocal enabledelayedexpansion
set num=0
:main
for /l %%a in (0 1 25) do (
    for /l %%b in (0 1 35) do (
        for /l %%c in (0 2 100) do (
            set /a 鸡=5*%%a+3*%%b+%%c/2
            set /a 钱=%%a+%%b+%%c
            if !鸡! equ 100 if !钱! equ 100 (
                set /a num+=1
                echo!num!种方法:  %%a + %%b + %%c
        ))))
echo  共有 %num% 种方法
pause>nulCOPY
不大可能的事也许今天实现,根本不可能的事也许明天会实现

TOP

新开区这么久了,没见几个人来呢?

郁闷ing~~!@$#^@^&*
不大可能的事也许今天实现,根本不可能的事也许明天会实现

TOP

别急,面包会有的,房子也会有的。。。。
技术问题请到论坛发帖求助!

TOP

要不别买鸡了用那100块钱雇两人吧

TOP

回复 5楼 的帖子

牛 ,真 牛
牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛

TOP

错了没看清题目,终于改好了。
@echo off
set/a a=100/5,b=100/3,c=1000/5
::c大于100,所以循环时取100
for /l %%i in (0,1,%a%) do (
 for /l %%j in (0,1,%b%) do (
  for /l %%k in (0,2,100) do (
   call :cnt %%i %%j %%k n m
  )
 )
)
pause
goto :eof
:cnt
 set/a %4=5*%1+3*%2+5*%3/10
 set/a %5=%1+%2+%3
 if %n% equ 100 if %m% equ 100 echo %n%=5*%1+3*%2+0.5*%3COPY

TOP

这题使用3重for循环,效率一下就降低了,可以使用2重。。。
心绪平和,眼藏静谧。

TOP

@echo off&setlocal enabledelayedexpansion
echo100块钱买鸡,价格如下:公:5$, 母:3$, 小:1$两只,一共多少种买法?
for /l %%i in (0,1,20) do (
   for /l %%j in (0,1,35) do (
       set/a a=5*%%i,b=3*%%j,c=^(100-a-b^)*2
       if !c! geq 0 set/a n+=1&echo 公鸡 %%i%%j 小鸡 !c!
))
echo 共有 %n% 种买法
pauseCOPY

原来还有个条件
@echo off&setlocal enabledelayedexpansion
echo100块钱买鸡,价格如下:公:5$, 母:3$, 小:1$两只,一共多少种买法?
for /l %%i in (0,1,20) do (
   for /l %%j in (0,1,35) do (
       set/a a=5*%%i,b=3*%%j,c=^(100-a-b^)*2,m=%%i+%%j+c
       if !m! equ 100 if !c! geq 0 set/a n+=1&echo 公鸡 %%i%%j 小鸡 !c!
))
echo 共有 %n% 种买法
pauseCOPY

[ 本帖最后由 terse 于 2008-9-16 21:13 编辑 ]

TOP

现在钱不耐用了,以前100块可以把猪抱回家了,现在100块不知道能不能买到多少只鸡!
不管黑猫白猫,会捉老鼠的猫就是好猫!

TOP

回九楼terse,你的方法是很快,就是有点小错误。
我改了下,不要见怪
@echo off
echo100块钱买鸡,价格如下:公:5$, 母:3$, 小:1$两只,一共多少种买法?
for /l %%i in (0,1,20) do (
 for /l %%j in (0,1,33) do (
  call :setv %%i %%j c a b d
 )
)
echo 共有 %n% 种买法
pause
goto :eof
:setv
 set/a %4=5*%1,%5=3*%2
 set/a %3=(100-%a%-%b%)*2
 set/a %6=%1+%2+%c%
 if #%d%==#100 set/a n+=1&echo 公鸡 %1 鸡 %2 小鸡 %c%COPY

TOP

原帖由 wxcute 于 2008-9-16 19:25 发表
回九楼terse,你的方法是很快,就是有点小错误。
我改了下,不要见怪@echo off
echo 用100块钱买鸡,价格如下:公:5$, 母:3$, 小:1$两只,一共多少种买法?
for /l %%i in (0,1,20) do (
 for /l %%j in (0,1,33) d ...

这个意思吧
@echo off&setlocal enabledelayedexpansion
echo100块钱买鸡,价格如下:公:5$, 母:3$, 小:1$两只,一共多少种买法?
for /l %%i in (0,1,20) do (
   for /l %%j in (0,1,35) do (
       set/a a=5*%%i,b=3*%%j,c=^(100-a-b^)*2,m=%%i+%%j+c
       if !m! equ 100 if !c! geq 0 set/a n+=1&echo 公鸡 %%i%%j 小鸡 !c!
))
echo 共有 %n% 种买法
pauseCOPY

TOP

嗯。

问一下,这个”m=%%i+%%j+c“中的 c 为什么可以不用括起来?

TOP

@echo off&setlocal enabledelayedexpansion
for /l %%a in (0 1 20) do (
      for /l %%i in (0 1 33) do (
           set/a n=100-%%a-%%i,x=n"&"1
           if !x! equ 0 (
              set/a y=%%a*5+%%i*3+(n ">>" 1^)
              if !y! equ 100 set/a a+=1&echo %%a公鸡 %%i母鸡 !n!小鸡
)))
echo %a%种买法。
pauseCOPY
心绪平和,眼藏静谧。

TOP

回复 13楼 的帖子

在用set /a进行计算的时候,变量是不需要“括起来”的(“括起来”也不会错)。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表