中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-20 05:40
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [出题]bat应用 查看 2,016 回复 22
楼 主 [出题]bat应用 发表于 2008-07-14 19:10 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
鸡兔同笼而不识其各自数量,数头3600,数脚12000,求多少只兔子,多少只鸡。
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
2 发表于 2008-07-14 19:21 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
完全没有思路,这怎么算啊?
致精致简!
3 发表于 2008-07-14 19:23 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
26933062前辈还真是会开玩笑,你若不会,还有谁会?~
不好意思,我本想配合你的玩笑的。。。^_^
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
4 发表于 2008-07-14 19:33 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
根本没法考虑bat问题,因为我根本就不知道怎么去算。
致精致简!
5 发表于 2008-07-14 19:59 ·  中国 重庆 九龙坡区 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
@echo off
setlocal enabledelayedexpansion
echo 我正在想。。。
set a=3600
set b=12000
set x=1
:loop
set /a f=2*!x!+4*(%a%-!x!)
set j=!x!
set /a t=%a%-!x!
if %f% equ %b% (
echo 鸡:%j% 兔:%t%
pause
goto :eof
)
set /a x+=1
if !x! lss %a% (
goto :loop
)
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
pusofalse +5 2008-07-14 20:05
6 发表于 2008-07-14 20:07 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
高!~ 其实前辈的代码不用延迟也可以啊~
我用了个投机取巧的方法,取其公约数,得出正确结果后在后面补0。。。

[ Last edited by pusofalse on 2008-7-14 at 08:09 PM ]
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
7 发表于 2008-07-14 20:14 ·  中国 重庆 九龙坡区 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
刚开始想太复杂了,开了延迟扩展,后来贴代码的时候忘了删掉,见谅:)
8 发表于 2008-07-14 20:35 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
给 5 楼 缩水
我只能干体力活了。
:

@echo off
:loop
set /a x+=1,f=2*x+4*(3600-x),j=x,t=3600-x
if %f% neq 12000 goto :loop
echo 鸡:%j% 兔:%t%
pause
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
pusofalse +5 2008-07-14 20:44
致精致简!
9 发表于 2008-07-14 20:42 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
汗。。。没思路,这么精简。赞佩!~

[ Last edited by pusofalse on 2008-7-14 at 08:43 PM ]
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
10 发表于 2008-07-14 20:44 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
这个题我完全不会算,在qq里请教了5楼,他写出了代码,我只是把他的代码精简了一下而以。
致精致简!
11 发表于 2008-07-14 20:47 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
Originally posted by 26933062 at 2008-7-14 08:44 PM:
这个题我完全不会算,在qq里请教了5楼,他写出了代码,我只是把他的代码精简了一下而以。

我觉得你在说谎,这题无论如何也难不倒你的。。。
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
12 发表于 2008-07-15 13:49 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
来个小学版的,不要循环:

@echo off
set /a a=(3600*4-12000)/2
set /a b=3600-a
echo 兔子%b%只,鸡%a%只。&pause>nul
本帖最近评分记录 (共 2 条) 点击查看详情
评分人分数时间
pusofalse +7 2008-07-15 14:46
26933062 +5 2008-07-15 17:23
批处理之家新域名:www.bathome.net
13 发表于 2008-07-15 14:46 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
Originally posted by zw19750516 at 2008-7-15 01:49 PM:
来个小学版的,不要循环:

@echo off
set /a a=(3600*4-12000)/2
set /a b=3600-a
echo 兔子%b%只,鸡%a%只。&pause>nul

厉害。。。这思路。。。简直五体投地了。
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
14 发表于 2008-07-15 17:13 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
厉害。。。这思路。。。简直五体投地了。


这道题其实就是小学数学里的鸡兔问题,下面讲一下解题思路吧(晕,有点小
学数学老师的感觉):
先假设3600只全部是兔子,那么就会有3600*4=144000只脚,144000-
12000就比实际多出了2400只脚,现在反过来想如果将3600只里的n只兔子换成
为n只鸡就能使脚总数正好等于12000只,而每只兔子比每只鸡多两只脚,于是
n=2400/2=1200只,也就是说将3600只兔子里的1200只换成为鸡,脚的总数正
好为12000只,于是,此题便解出来了:兔子2400只,鸡1200只。
同时,还可以先假设3600只全部是鸡,12000-3600*2/(4-2)得出要替换为
兔子的鸡为2400只,剩下的鸡为1200只。
批处理之家新域名:www.bathome.net
15 发表于 2008-07-15 17:24 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
Originally posted by zw19750516 at 2008-7-15 13:49:
来个小学版的,不要循环:

@echo off
set /a a=(3600*4-12000)/2
set /a b=3600-a
echo 兔子%b%只,鸡%a%只。&pause>nul

真是一个比一个强!
致精致简!
论坛跳转: