主题:一个Pascal问题,请大家来作(狐狸捉兔子)
xpycc
[专家分:410] 发布于 2005-07-11 18:15:00
【问题】围绕着山顶有10个洞,狐狸要吃兔子,兔子说:"可以,但必须找到我,我就藏身于这十个洞中,你从10号洞出发,先到1号洞找,第二次隔1个洞找,第三次隔2个洞找,以后如此类推,次数不限。"但狐狸从早到晚进进出出了1000次,仍没有找到兔子。问兔子究竟藏在哪个洞里?
大家来做做吧~~~~~~~~~~~~~~~~~
回复列表 (共21个回复)
沙发
xpycc [专家分:410] 发布于 2005-07-12 13:35:00
不是吧,没人作~~~~~~~~~~~~~~~~~~~~
没办法,只好自己的发上来了~~~~~~~~~~~~~~
program tuzi;
const n=10;
var
i,j,k:integer;
a:array[0..9]of boolean;
begin
for i:=1 to n do a[i]:=false;
i:=2;
while i<=9 do
begin
a[i]:=true;
j:=1;
k:=1;
while (not a[j])and(k<=999) do
begin
k:=k+1;
j:=(j+k)mod n;
end;
a[i]:=false;
if k=1000 then writeln(i);
i:=i+1;
end;
readln
end.
板凳
xpycc [专家分:410] 发布于 2005-07-17 08:44:00
又沉下去了~~~~~~~~~~~~~~~~~~
3 楼
口口and枕头 [专家分:1550] 发布于 2005-07-17 11:14:00
不是没人做~~~这个好像以前有人出来~~你看看以前的贴呢~~~
4 楼
cxxx401 [专家分:140] 发布于 2005-07-17 11:49:00
我靠
我去年的冬令营最终测试就有这题.
模拟一下就好了.
(南京)分营.
5 楼
xpycc [专家分:410] 发布于 2005-07-19 11:41:00
楼上的,你看见过,但有的人没看见过呀!你吵什么!要证明你很厉害就拿实事来证明呀!光说不做又算什么呢?
6 楼
口口and枕头 [专家分:1550] 发布于 2005-07-19 11:58:00
呵呵~~~
CXXX401
不是我一个人吵你哟~~
你嘴巴真的有点讨厌哟~~~~~~~~~~~~~~~
支持xpycc吵他(不过不要太过火了~~~~~哟~~)
[em12]
7 楼
口口and枕头 [专家分:1550] 发布于 2005-07-19 12:02:00
实话说xpycc你的那个解我没看懂,,,,能一步一步的解释一下吗?特别是变量的用处`~~
我也写了个,不知道对不对~~~
program tuzi;
const n=10;
var
i,j,k:integer;
a:array[1..n] of boolean;
begin
for i:=1 to n do a[i]:=true;
j:=1;
for i:=1 to 1000 do
begin
a[i mod n]:=false;
j:=j+1;
i:=j+i;
end;
for i:=1 to 10 do
if a[i] then write(i:3);
readln;
end.
结果为:
2 5 7 10
8 楼
xpycc [专家分:410] 发布于 2005-07-19 12:15:00
其实我的方法不是最好,因为有重复,不过既然楼上要求,那就解释一下:
数组a表洞,每次循环找到一个位置i,假设这里是兔子呆的地方,注意0表示10;
接下来就是模拟,若狐狸根据规则找到了兔子呆的地方,那么就跳出模拟;
如果狐狸没找到,那么就输出此时的i。
其实这一道也可以理解为数学问题:
就是1+2+3+...+n(n是在不断自增1的整数)个位数字没有出现过的都是题目的正解。
9 楼
口口and枕头 [专家分:1550] 发布于 2005-07-19 13:17:00
看看我做对了吗?
10 楼
xpycc [专家分:410] 发布于 2005-07-20 12:41:00
你运行一下,答案是2,4,7,9~~~~~~~~~~~~~~~~
我来回复